我有一个快速的应用程序,我想在其中使用SortedList。由于没有这么多的使用,我做了一个小的研究,以确保我知道我在做什么,并逐渐发现显然有两个版本。还是有一个SortedList具有其他特性?您会发现一个版本是System.Collections,另一个版本是System.Collections.Generic。
System.Collections.SortedList slist1 = new SortedList();
System.Collections.Generic.SortedList<string, object> slist2 = new SortedList<string, object>();他们在许多方面有不同之处。首先,slist1有一个slist2没有的方法SetByIndex。
那么,为什么有两个版本的SortedList?以及如何更新泛型SortedList中对象的值?
发布于 2016-07-11 19:21:27
System.Collections.SortedList比较老,它来自.NET 1.1,在支持泛型之前。System.Collections.Generic.SortedList<TKey, TValue>是在.NET 2.0中引入的,通常应该使用它。
把它们看作是System.Collections.ArrayList对System.Collections.Generic.List<TValue>的等价物。
要更新通用版本,需要使用索引器
slist2["SomeKeyString"] = newValue;如果要通过数字索引查找,则使用Keys属性获取密钥。
slist2[slist2.Keys[2]] = newValue;注意:这可能会带来比非通用版本更差的性能,因为TValue this[TKey index]需要执行二进制搜索才能进行查找,SetByIndex可以直接进行数组访问。
最后一个注意事项是,只有当您要枚举foreach中的列表并需要维护订单时,foreach才是真正有用的,如果foreach中的顺序并不重要,而是使用Dictionary<TKey, TValue>,那么您将得到更快的插入和查找。
发布于 2016-07-11 19:21:12
非泛型类System.Collections.SortedList是在添加泛型之前在.NET早期创建的类之一。
这是该命名空间中的大多数类(如果不是全部的话)的来源,至少如果它们有泛型的替代品的话。
泛型版本是在以后添加泛型时或之后添加的,现在通常是首选的数据结构。
System.Collections.SortedList回到.NET 1.1System.Collections.Generic.SortedList<..>是在.NET 2.0中添加的发布于 2016-07-11 19:22:46
System.Collections.SortedList可以追溯到.NET的1.1版,在出现泛型类之前。它仍然存在,因为遗留代码可能会使用更新的框架版本重新编译,因此需要在其中。
更新泛型SortedList中对象的值
myGenericSortedList["key"] = "value";https://stackoverflow.com/questions/38314533
复制相似问题