问题标签 [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.
c# - 复制 KeyedCollection 的最快方法
我正在研究 C# 对象复制构造函数,其中一部分涉及将 KeyedCollection 的内容复制到新的 KeyedCollection 中。这是我目前实施的:
这是正确的——集合按预期复制。问题是它也有点慢。我猜问题是每个 .Add(do) 都需要对现有数据进行唯一性检查,即使我知道它来自保证唯一性的来源。
我怎样才能使这个复制构造函数尽可能快?
silverlight - Silverlight 中的键控 ObservableCollection
我想在 Silverlight 中实现一个键控可观察集合,它将基于名为 Name 的属性存储唯一对象。一种方法是使用 ObservableCollectionEx(另一个 stackoverflow 帖子中的示例)类订阅包含的元素上的所有 PropertyChanged 事件,并检查 name 属性是否更改。更好的是,创建我自己的事件,它会告诉我 name 属性已更改,如果 item 已存在则抛出 ValidationException。我不一定想用索引器 this[Name] 检索对象。
像这样的东西:
还有其他更优雅的解决方案吗?简单得多?谢谢,阿德里安
PS我知道Wpf博士还整理了一个ObservableDictionary,很容易将其移至Silvelight,但我不知道如何将它与DataForm等一起使用。
c# - 从 KeyedCollection 添加和检索
我想使用 KeyedCollection 针对字符串键值存储一个类。我有以下代码:
谁能告诉我我在这里做错了什么?我在哪里指定键值以便我可以通过它检索?
c# - 如何对 KeyedCollection 进行排序?
基本上我有一个KeyedCollection<string, CustomNode>
,我希望能够通过键(或者最好使用自定义比较器)对集合进行排序。
如果这是不可能的,有人可以推荐另一个类,其中键嵌入在我可以排序的值中吗?
c# - 从 KeyedCollection 获取键列表的最有效方法是什么?
我正在寻找一种与通用字典的 Keys 属性(KeyCollection 类型)一样有效的方法。
使用 Linq select 语句会起作用,但每次请求键时它都会遍历整个集合,而我相信键可能已经存储在内部。
目前我的 GenericKeyedCollection 类看起来像这样:
更新:感谢您的回答,因此我将使用以下属性而不是使用 Linq 进行迭代。
python - Python中的键控集合?
是否有任何等效于 Python 中的KeyedCollection,即元素具有(或动态生成)自己的键的集合?
即这里的目标是避免将密钥存储在两个地方,因此字典不太理想(因此提出了问题)。
c# - KeyedCollection 是什么集合?
我想创建一个遍历键控集合的方法。我想确保我的方法支持扩展任何集合的迭代KeyedCollection<string, Collection<string>>
这是方法:
它显然不起作用,因为我不知道哪种类型应该替换循环中的问号。我不能简单地放object
orvar
因为我需要稍后在循环体中调用Key
and属性。Value
我要寻找的类型是什么?谢谢。
c# - 尝试从 Keyedcollection 实现 Serializble DIctionary,无法添加对象
长话短说,我需要一组具有类似字典功能的对象,可以序列化以保存用户数据。原始字典是一个 Dictionary 类,它包含一个 Item 对象数组以及用户“持有”的每个对象的数量。在互联网上找到一些建议后,我尝试从 KeyedCollection 实现我自己的类字典类,但似乎无法向其中添加对象。我添加的对象是错误的还是我的收藏有问题?
'SerialDictionary' 类:
主窗体(试图添加对象)
尝试添加对象时收到的错误:
'System.Collections.ObjectModel.Collection.Add(int)' 的最佳重载方法匹配有一些无效参数
如果我在其中抛出一个 int ,它会编译,但我试图在其中获取 Item 对象的集合......
c# - 如何将 KeyedCollection 设为只读?
首先让我解释一下为什么我使用 KeyedCollection。我正在构建一个 DLL,并且我有一个需要添加到集合中的项目列表,并让它们保持我放置它们的顺序,但我还需要通过它们的索引和键来访问它们(键是我已经定义的对象的属性)。如果有其他更简单的集合可以做到这一点,请告诉我。
好的,现在我需要能够在 DLL 内部向此集合添加项目,但我需要它以只读方式对 DLL 的最终用户公开可用,因为我不希望他们删除/更改我添加的项目.
我已经搜索了这个网站,其他网站,一般的谷歌,我还没有找到一种方法来获得某种只读的 KeyedCollection。我最接近的是这个页面(http://www.koders.com/csharp/fid27249B31BFB645825BD9E0AFEA6A2CCDDAF5A382.aspx?s=keyedcollection#L28)但我不能让它工作。
更新:
我看了看那些C5课程。那,连同你的其他评论,帮助我更好地理解如何创建我自己的只读类,它似乎工作。但是,当我尝试将常规的转换为只读的时,我遇到了问题。我得到一个编译时无法转换错误。这是我创建的代码(第一个小类是我最初拥有的):
如果我定义了这个变量:
然后这样做:
它无法编译。它们都继承自同一个类,我认为它们会“兼容”。如何将集合转换(或公开)为我刚刚创建的只读类型?
c# - 找不到类型或命名空间名称 keyedcollection
我对 C# 还很陌生,所以如果这是一个愚蠢的问题,请原谅我。我遇到了一个错误,但我不知道如何解决它。我正在使用 Visual Studio 2010。
此代码行
给我错误
根据我的阅读,这可以通过在继承类中实现抽象成员来解决,如下所示
然而,这给了我错误,说“找不到类型或命名空间名称 TKey/TItem 找不到。”
帮助!