问题标签 [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 投票
5 回答
3173 浏览

c# - 复制 KeyedCollection 的最快方法

我正在研究 C# 对象复制构造函数,其中一部分涉及将 KeyedCollection 的内容复制到新的 KeyedCollection 中。这是我目前实施的:

这是正确的——集合按预期复制。问题是它也有点慢。我猜问题是每个 .Add(do) 都需要对现有数据进行唯一性检查,即使我知道它来自保证唯一性的来源。

我怎样才能使这个复制构造函数尽可能快?

0 投票
2 回答
2160 浏览

silverlight - Silverlight 中的键控 ObservableCollection

我想在 Silverlight 中实现一个键控可观察集合,它将基于名为 Name 的属性存储唯一对象。一种方法是使用 ObservableCollectionEx(另一个 stackoverflow 帖子中的示例)类订阅包含的元素上的所有 PropertyChanged 事件,并检查 name 属性是否更改。更好的是,创建我自己的事件,它会告诉我 name 属性已更改,如果 item 已存在则抛出 ValidationException。我不一定想用索引器 this[Name] 检索对象。

像这样的东西:

还有其他更优雅的解决方案吗?简单得多?谢谢,阿德里安

PS我知道Wpf博士还整理了一个ObservableDictionary,很容易将其移至Silvelight,但我不知道如何将它与DataForm等一起使用。

0 投票
3 回答
5015 浏览

c# - 从 KeyedCollection 添加和检索

我想使用 KeyedCollection 针对字符串键值存储一个类。我有以下代码:

谁能告诉我我在这里做错了什么?我在哪里指定键值以便我可以通过它检索?

0 投票
5 回答
3299 浏览

c# - 如何对 KeyedCollection 进行排序?

基本上我有一个KeyedCollection<string, CustomNode>,我希望能够通过键(或者最好使用自定义比较器)对集合进行排序。

如果这是不可能的,有人可以推荐另一个类,其中键嵌入在我可以排序的值中吗?

0 投票
2 回答
1861 浏览

c# - 从 KeyedCollection 获取键列表的最有效方法是什么?

我正在寻找一种与通用字典的 Keys 属性(KeyCollection 类型)一样有效的方法。

使用 Linq select 语句会起作用,但每次请求键时它都会遍历整个集合,而我相信键可能已经存储在内部。

目前我的 GenericKeyedCollection 类看起来像这样:

更新:感谢您的回答,因此我将使用以下属性而不是使用 Linq 进行迭代。

0 投票
8 回答
687 浏览

python - Python中的键控集合?

是否有任何等效于 Python 中的KeyedCollection,即元素具有(或动态生成)自己的键的集合?

即这里的目标是避免将密钥存储在两个地方,因此字典不太理想(因此提出了问题)。

0 投票
2 回答
1631 浏览

c# - KeyedCollection 是什么集合?

我想创建一个遍历键控集合的方法。我想确保我的方法支持扩展任何集合的迭代KeyedCollection<string, Collection<string>>

这是方法:

它显然不起作用,因为我不知道哪种类型应该替换循环中的问号。我不能简单地放objectorvar因为我需要稍后在循环体中调用Keyand属性。Value我要寻找的类型是什么?谢谢。

0 投票
1 回答
176 浏览

c# - 尝试从 Keyedcollection 实现 Serializble DIctionary,无法添加对象

长话短说,我需要一组具有类似字典功能的对象,可以序列化以保存用户数据。原始字典是一个 Dictionary 类,它包含一个 Item 对象数组以及用户“持有”的每个对象的数量。在互联网上找到一些建议后,我尝试从 KeyedCollection 实现我自己的类字典类,但似乎无法向其中添加对象。我添加的对象是错误的还是我的收藏有问题?

'SerialDictionary' 类:

主窗体(试图添加对象)

尝试添加对象时收到的错误:

'System.Collections.ObjectModel.Collection.Add(int)' 的最佳重载方法匹配有一些无效参数

如果我在其中抛出一个 int ,它会编译,但我试图在其中获取 Item 对象的集合......

0 投票
4 回答
1733 浏览

c# - 如何将 KeyedCollection 设为只读?

首先让我解释一下为什么我使用 KeyedCollection。我正在构建一个 DLL,并且我有一个需要添加到集合中的项目列表,并让它们保持我放置它们的顺序,但我还需要通过它们的索引和键来访问它们(键是我已经定义的对象的属性)。如果有其他更简单的集合可以做到这一点,请告诉我。

好的,现在我需要能够在 DLL 内部向此集合添加项目,但我需要它以只读方式对 DLL 的最终用户公开可用,因为我不希望他们删除/更改我添加的项目.

我已经搜索了这个网站,其他网站,一般的谷歌,我还没有找到一种方法来获得某种只读的 KeyedCollection。我最接近的是这个页面(http://www.koders.com/csharp/fid27249B31BFB645825BD9E0AFEA6A2CCDDAF5A382.aspx?s=keyedcollection#L28)但我不能让它工作。

更新:

我看了看那些C5课程。那,连同你的其他评论,帮助我更好地理解如何创建我自己的只读类,它似乎工作。但是,当我尝试将常规的转换为只读的时,我遇到了问题。我得到一个编译时无法转换错误。这是我创建的代码(第一个小类是我最初拥有的):

如果我定义了这个变量:

然后这样做:

它无法编译。它们都继承自同一个类,我认为它们会“兼容”。如何将集合转换(或公开)为我刚刚创建的只读类型?

0 投票
1 回答
612 浏览

c# - 找不到类型或命名空间名称 keyedcollection

我对 C# 还很陌生,所以如果这是一个愚蠢的问题,请原谅我。我遇到了一个错误,但我不知道如何解决它。我正在使用 Visual Studio 2010。

此代码行

给我错误

根据我的阅读,这可以通过在继承类中实现抽象成员来解决,如下所示

然而,这给了我错误,说“找不到类型或命名空间名称 TKey/TItem 找不到。”

帮助!