Tag: 集合

C#.First()vs

有兴趣,方法有什么不同。 所以,我创建了两个片段。 Snippet A List a = new List(); a.Add(4); a.Add(6); int b = a.First(); 和 Snippet B List a = new List(); a.Add(4); a.Add(6); int b = a[0]; 在IL,我们相信,所以 Snippet A IL IL_0000: nop IL_0001: newobj System.Collections.Generic.List..ctor IL_0006: stloc.0 // a IL_0007: ldloc.0 // a IL_0008: ldc.i4.4 IL_0009: callvirt System.Collections.Generic.List.Add IL_000E: nop IL_000F: ldloc.0 […]

允许相同密钥的通用集合

像HashTable和Dictionary这样的集合不允许使用相同的键添加值,但我想在Collection使用相同的键存储相同的值。 是否有内置的集合让我这样做?

‘适当’集合用于在C#.NET中的O(1)时间内获取项目?

如果我存储了一堆字符串值并且我希望能够在O(1)之后找到它们,我经常做的事情是: foreach (String value in someStringCollection) { someDictionary.Add(value, String.Empty); } 这样,我可以在以后轻松地对这些字符串值执行常量时间查找,例如: if (someDictionary.containsKey(someKey)) { // etc } 但是,我觉得我在制作值String.Empty时作弊。 我应该使用更合适的.NET集合吗?

generics和System.Collections

迁移到.NET 2.0+后,有没有理由继续使用systems.Collections命名空间(除了维护遗留代码)? 是否应该始终使用generics命名空间?

为什么不允许使用重新分配的集合初始值设定项?

我一直认为它在两方面都很好。 然后做了这个测试并意识到它不允许重新分配: int[] a = {0, 2, 4, 6, 8}; 工作正常但不是: int [ ] a; a = { 0, 2, 4, 6, 8 }; 这有什么技术原因吗? 我想我会在这里问一下,因为这种行为是我直觉所期待的。

删除List 中的备用元素

在不使用占位符列表变量的情况下,在List删除备用(奇数索引或甚至索引)元素的最有效方法是什么? 如果您能提出每个答案的费用,我们将不胜感激。 我正在寻找一种有效的方法来做到这一点 提前致谢

在WinForms中更新BindingSource不会更新数据源集合

我想在Windows窗体应用程序的DataGridView中显示自定义集合。 此自定义集合实现ICollection和IEnumerable 。 我已经设置了一个BindingSource ,使用该集合作为.DataSource属性。 DataGridView设置为使用我的BindingSource作为DataSource。 当我使用BindingSource.Add()方法向集合中添加新项时, DataGridView使用新项正确更新。 另一方面, BindingSource DataSource不会: MyCustomCollection myCollection = new MyCustomCollection(); myCollection.Add(myCustomObject1); myCollection.Add(myCustomObject2); myBindingSource.DataSource(myCollection); myBindingSource.Add(myCustomObject3); 在上面的代码中,myBindingSource的内部List包含正确数量的记录(3),而DataGridView也包含三个记录,但myCollection只包含两个记录。 我知道更改底层的myCollection不会更新BindingSource或DataGridView ,因为它不是BindingList ,但我的印象是直接更新BindingSource会确保myCollection同时更新。 有没有办法使用不是BindingList的集合,并在直接与BindingSource交互时更新它? 更新 :我在所有部分(Collection,BindingSource,DataGridView)上更新数据的一种方法如下: myCollection.Add(myCustomObject3); myBindingSource.DataSource = null; myBindingSource.DataSource = myCollection; 我很确定有更好的方法可以解决这个问题,但这是我生成预期结果的唯一方法。

固定大小到列表

对于声明透视,允许以下内容 IList list= new string[3]; list.Add(“Apple”); list.Add(“Manago”); list.Add(“Grapes”); 1)它编译很好,但运行时我得到”Collection was of fixed size”错误。 当然,集合是按大小动态增长的,为什么这样的声明被编译器接受? 2)我可以分配给IList的不同列表是什么? 例 IList fruits=new List(); 在这里,我将List分配给IList,我可以分配给IList的各种集合类有哪些?

联盟两个ObservableCollection列表

我有两个ObservableCollection列表,我想团结起来。 我天真的做法是使用联盟 – 方法: ObservableCollection unitedPoints = observableCollection1.Union(observableCollection2); ObservableCollection1 / 2也是ObservableCollection类型。 但编译器会为此行抛出以下错误: 类型“System.Collections.Generic.IEnumerable”无法隐式转换为“System.Collections.ObjectModel.ObservableCollection”。 已经存在明显的转换。 (可能缺少转换) (措辞可能不准确,因为我从德语翻译)。 谁知道,如何合并ObservableCollections并获得一个ObservableCollection作为结果? 谢谢,弗兰克 Edith说:我刚才意识到,重要的是要提到我开发了Silverlight-3-Application,因为“ObservableCollection”类在SL3和.NET3.0场景中有所不同。

C#与VBA中的List 类似

我想在VBA上创建一个List ,就像你在C#上创建一样,我有什么方法可以做到这一点? 我在这里寻找有关它的问题,但我找不到任何问题。