我有一个快速应用程序,我想在其中使用 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 有一个 SetByIndex 方法,而 slist2 没有。
那么,为什么有两个版本的 SortedList?以及如何更新 Generic SortedList 中对象的值?
最佳答案
System.Collections.SortedList
较旧,它来自 .NET 1.1,回到支持泛型之前。 System.Collections.Generic.SortedList<TKey, TValue>
是在 .NET 2.0 中引入的,通常应该改用。
将它们视为 System.Collections.ArrayList
与 System.Collections.Generic.List<TValue>
的等效项。
要更新通用版本,您需要使用 the indexer
slist2["SomeKeyString"] = newValue;
或者,如果您想通过数字索引查找,则使用
Keys
属性来获取 key slist2[slist2.Keys[2]] = newValue;
注意:这可能会比非通用版本提供更差的性能,因为
TValue this[TKey index]
需要进行二进制搜索才能进行查找,SetByIndex
可以进行直接数组访问最后要注意的是,
SortedList<Tkey,TValue>
仅在您要枚举 foreach
中的列表并需要维护订单时才有用,如果 foreach
中的顺序无关紧要,请改用 Dictionary<TKey, TValue>
并且您将获得更快的插入和查找。关于c# - 为什么有两种SortedList?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38314533/