jjzjj

Collections

全部标签

c# - 集合类型名称中的 '1 是什么

我想知道集合类型名称中的'1是什么意思?例如:List'1,IList'1有人知道那是什么吗? 最佳答案 反引号表示:Thenameofagenerictypeendswithabacktick(`)followedbydigitsrepresentingthenumberofgenerictypearguments.Thepurposeofthisnamemanglingistoallowcompilerstosupportgenerictypeswiththesamenamebutwithdifferentnumbersofty

c# - 最佳实践 : How to expose a read-only ICollection

我有一个ICollection称为foos在我想公开为只读的类中(参见thisquestion)。我看到接口(interface)定义了一个属性.IsReadOnly,这似乎是合适的......我的问题是:我如何让类(class)的消费者明白foos是只读的?我不想依赖他们记住查询.IsReadOnly在尝试未实现的方法之前,例如.Add().理想情况下,我想公开foos作为ReadOnlyCollection,但它没有实现IList.我应该公开foo吗?通过一个名为的方法,例如GetReadOnlyFooCollection而不是通过属性(property)?如果是这样,这不会让那些

c# - 在 API 中返回的最佳集合类型是什么

我一直认为在拥有公共(public)API时返回数组比列表更好,但现在看来列表上的所有这些函数都可以通过LINQ等获得。此处返回基元或对象集合的最佳实践是否发生了变化?例如:Order[]GetOrders();ListGetOrders();IEnumerableGetOrders();IQueryableGetOrders(); 最佳答案 因为我通常只从属性/方法返回不可变(不可修改)的对象,所以这个答案假设你想做同样的事情。不要忘记ReadOnlyCollection它返回一个仍然可以通过索引访问的不可变集合。如果您使用IEn

c# 按值而不是键对 StringDictionary 进行排序

按值(而非键)顺序对StringDictionary进行排序(或迭代)的“最佳”方法是什么例如键-值1-X标签2-一个标签3-其他标签会给2-一个标签3-其他标签1-X标签编辑-我的意思是说“使用.NET2.0功能”。对不起,我不好... 最佳答案 使用LINQ:varitems=fromkind.Keysorderbyd[k]ascendingselectk;如果您受限于C#2.0功能,请使用:IDictionaryd=newDictionary();d["1"]="Xlabel";d["2"]="Alabel";d["3"]="

c# - OrderedDictionary、ListDictionary 和 HybridDictionary 需要什么?`

当OrderedDictionary、ListDictionary和HybridDictionary这三种不同的字典都执行相似的功能时,它们需要什么?它们都不是排序的,集合中的元素都可以通过键来检索。那么,三个不同类的目的是什么? 最佳答案 简而言之:Dictionary-嗯,字典。ListDictionary-用于小型集合,通常少于10件HybridDictionary-在集合大小未知时使用(根据集合大小切换实现)OrderedDictionary-与SortedDictionary的元素不同,OrderedDictionary的

c# - 数组上的 AsEnumerable() 有什么用?

我正在阅读ablog埃里克·利珀特(EricLippert)解释了为什么他几乎从不使用数组,以下部分让我很好奇:IfyouarewritingsuchanAPI,wrapthearrayinaReadOnlyCollectionandreturnanIEnumerableoranIListorsomething,butnotanarray.(Andofcourse,donotsimplycastthearraytoIEnumerableandthinkyou’redone!Thatisstillpassingoutvariables;thecallercansimplycastback

c# - 在 C# 中使字典只读

我有一个Dictionary>并希望将该成员公开为只读。我看到我可以将其作为IReadOnlyDictionary>返回,但我不知道如何将它作为IReadOnlyDictionary>返回.有没有办法做到这一点?在C++中,我只是使用const,但C#没有。请注意,只需使用IReadOnlyDictionary在这种情况下没有帮助,因为我也希望这些值是只读的。看起来唯一的方法是构建另一个IReadOnlyDictionary,并向其中添加IReadOnlyList。另一个我不会感到兴奋的选择是创建实现接口(interface)IReadOnlyDictionary>的包装器,并让它保存

c# - .NET 通用集?

是否有通用容器在.NET中实现“设置”行为?我知道我可以使用Dictionary(并可能添加nulls作为值),因为它的键作为一个集合,但我很好奇是否有现成的东西。 最佳答案 HashSet在.NET3.5中 关于c#-.NET通用集?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/353901/

c# - 在自定义类型上使用集合初始化语法?

我有一个很大的静态列表,它基本上是一个查找表,所以我用代码初始化了这个表。privateclassMyClass{privateclassLookupItem{publicintParam1{get;set;}publicintParam2{get;set;}publicfloatParam2{get;set;}publicfloatParam4{get;set;}}privatestaticList_lookupTable=newList(){newLookupItem(){Param1=1,Param2=2,Param3=3Param4=4},newLookupItem(){Par

c# - UserControl 集合未标记为可序列化

我一定是遗漏了一些非常明显的东西。我是C#的新手,但多年来一直使用C/C++进行编程,如果有明显的问题,我深表歉意;)[请参阅编辑以了解较新的问题]我正在尝试创建一个包含UserControl的节点。我让Control出现在WinForm设计器中,我可以向它添加节点。但是,当我尝试运行代码时,出现以下错误:Codegenerationforproperty'Nodes'failed.Errorwas:'TypeApp.Node'inAssembly'App,version=1.0.0.0,Culture=neutral,PublicKeyToken=null'isnotmarkedas