问题标签 [keyedcollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1230 浏览

c# - KeyedCollection 是否仅在 Key 确定其中项目的相等性时才表示?

我认为这是我们经常遇到的问题。

说我有这门课。我可以实现KeyedCollection这样的:

这里的情况是默认Equals值基于namePerson但在我的情况下,我正在创建一个自定义collectionPerson每个place. 换句话说place将是独一无二的collection

我明白这个问题。Contains(Person)重载是进行基于值的Collection<T>.Contains(T)线性搜索,同时Add(Person)将值添加到内部字典中,这可能导致重复键异常。在这里,如果平等是基于place,这个问题就不会存在。

我可以提供一个解决方法:

但这又意味着如果我做一个将军

返回true,但实际上Jean还不存在collection。所以我的问题是,只有KeyedCollection<K, T>Equals仅基于? 我的问题在语义方面很少。我不是在寻求解决方案,但只是知道是否对何时有意义有一般的理解?我从文档中找不到与此主题相关的任何内容。KTKeyedCollection

更新:

我发现这里提到的确切问题http://bytes.com/topic/net/answers/633980-framework-bug-keyedcollection-t

提问者向 MS 提交了错误报告。引用他的话(2007 年 4 月 18 日):

我将此作为错误提交给 Microsoft,他们已经验证并接受了它。这是问题 ID 271542,可以在此处跟踪:

“我们已经在 WinXP pro SP2 和 VSTS2005 SP1 上重现了这个错误,我们正在将此错误发送给 Visual Studio 产品团队中的适当小组进行分类和解决。”

虽然我不认为这是一个错误,但这肯定是一个烦恼。但只是想知道 MS 一开始是如何接受这个错误的(预计现在找不到该页面)。Imo,它只是考虑不周的继承模型。

0 投票
1 回答
411 浏览

c# - SortedList 与 KeyedCollection

我最近一直在使用 SortedList(key,value),但我想知道它与 KeyedCollection(key, value) 有何不同,除了明显的排序部分。

例如,如果我正在构建一个需要通过键检索项目的能力并且它们的排序不是那么重要的类,那么以下哪一个是更好的选择?:

  1. SortedList 作为类的一个属性:

    或者

  2. 扩展 KeyedCollection

    /li>

谢谢你。

0 投票
2 回答
242 浏览

c# - KeyedCollection 错误

我对 C# 集合很陌生。我不知道如何解决这个问题。

这行代码

给出错误

这是我的代码。我不确定如何纠正这个问题有人可以帮忙吗?

0 投票
2 回答
30 浏览

c# - 需要一些帮助来理解这个方法

有人能帮我澄清一下吗?return (HashSet) this[typeof(T)]; 如果可能的话,举个例子。谢谢你

0 投票
1 回答
791 浏览

c# - 异常的大 O 运行时

我有一个自定义Dictionary<T>的支持集合KeyedCollection。在尝试优化我在分析器中运行时看到的性能问题时,我注意到这IndexOf(T key)是我的问题领域之一。该代码目前实现如下:

我知道两者都有 O(n) 的大 O 运行时,并且已经在 MSDN 站点上确认了这一点Contains(T key)IndexOf(T key)https://msdn.microsoft.com/en-us/library/ms132438(v=vs.110).aspx
我认为优化此代码的一个好方法是取出一个 O(n) 操作,所以我将代码更改为:

当我比较这 2 个操作的运行时间超过 500,000 次时,带有Contains(T key)out 的代码将 try-catch 场景执行了将近 2 倍。

我的问题是,在使用会大大降低性能的 try-catch 块时是否存在大量开销?

0 投票
1 回答
257 浏览

vb.net - 序列化包含另一个 keyedcollection 的 Keyedcollection

我最近开始使用来自 vba 的 vb.net。

对于我计划的应用程序,我想创建一个存储另一个 keyedcollection 的 KeyedCollection。原因是我有一种数据库,我希望能够在其中存储不同数量的“参数集”,即现在未定义数量的“List_of_Parameters”,其中存储了系数数组。我的问题在于序列化。当我运行 XMLSerialization 时,只有最深嵌套的元素被正确存储。上一层的元素被称为“Array_of_node”,除了keyedcollection之外的所有变量都被忽略了。

我原以为我会看到类名而不是类名。此外,我曾预料会看到这样的东西。

...

任何帮助将不胜感激,最好的问候,约翰内斯。

这是我得到的 xml 输出:

这是我的数据库:

这是存储不同参数集的“List_of_Coeffiencts”列表的类:

这是最终的“系数列表”

这是我的示例主程序:

0 投票
0 回答
279 浏览

c# - 枚举位掩码的字典

我正在寻找现有的解决方案或创建一个解决方案来解决基于枚举位掩码查找项目的问题。本质上,我有一个带有标志属性集的枚举,因此我可以将这些值组合成一个位掩码。我想做的是为每个单独的值设置一个存储桶,并在掩码中启用标志的每个存储桶中放入一个条目。

字典的值部分将用作一种包含条目的列表。理想情况下,代码用法类似于以下内容:

我已经知道如何使用带有 value 元素作为列表的 Dictionary 来完成此操作。我关心的是当我创建数千个对象时的效率,每个对象都有自己的错误查找机制实例。我不希望这个错误字典的每个实例都有数百个条目,因为每个对象只有 N 个字段,并且只有有限数量的位掩码,因此我考虑只使用列表或键控设置,转换为列表并对其运行 LINQ 以查找不同的 Enum 条目桶。

编辑:我希望错误在内存中看起来像这样

因此,当 UI 询问 Errors 是否 Fields.Password 有任何错误时,它会报告两个,并且 UI 可以在该字段上显示一个指示符,并报告相应的错误。具有列表值的字典在很大程度上可以解决这个问题,但我担心它在内存中的效率如何,并且想知道整个对象的单个列表是否可能不会更好。IE List() 其中 Errors 包含一个位掩码和一个 ErrMsg 字符串,让 Linq 对其进行排序。

0 投票
1 回答
141 浏览

c# - 带有 MutableKey 的 KeyedCollection

我从这篇文章开始获取不同类型的 MutableKey 集合。

我想为我的所有集合创建一个抽象的 KeyedCollection 基类,因此我使用泛型和接口来实现我的目的,但我想知道是否有更优雅的解决方案来避免为我的项目公开Collections属性。

0 投票
1 回答
117 浏览

c# - Protobuf-net KeyedCollection 序列化

我需要用 protobuf-net 序列化/反序列化 KeyedCollection,我可以只序列化一个列表吗?

如果是这样,将列表转换回 KeyedCollection 的最有效方法是什么?

下面是一个显示案例的示例代码:

0 投票
2 回答
265 浏览

c# - KeyedCollection GetKeyForItem 和 Dictionary 不起作用

这是我的问题:我似乎无法使用 .Dictionary 属性或 GetKeyForItem 方法。是否有我缺少的 using 语句或其他内容?本质上,我想为我的 keyedcollection 中的每个对象检索一个键列表。我找到了另一种方法(如代码所示),但我只是想知道为什么内置的 .Dictionary 和 .GetKeyForItem 不起作用。我在想,如果我无法访问这些,也许我设置不正确?谢谢您的帮助。

资料来源:

http://geekswithblogs.net/NewThingsILearned/archive/2010/01/07/using-keyedcollectionlttkey-titemgt.aspx

https://msdn.microsoft.com/en-us/library/ms132438.aspx