Gag*_*age 25 .net c# collections performance
我想知道哪种类型会有更好的性能以及您认为应该使用哪种类型.
例如,我有一个字符串列表,不知道我需要多少项,因此.Add(String)函数非常方便.我可以随时轻松地将新字符串添加到列表中.
使用每个的优点/缺点是什么?
列出新阵列?
Aar*_*ght 36
真正需要更多背景来正确回答这个问题:
在公共API中,您应该尝试使用抽象集合类型,以便以后可以根据需要更改内部实现.
IEnumerable<T>.ICollection<T>.IList<T>.在私有实现中,使用抽象类型并不重要:
T[]或List<T>.List<T>.Stack<T>.Queue<T>.LinkedList<T>.HashSet<T>.在.NET 4.0中,您有更多选择,但这些是基础知识.
bri*_*ner 22
List<String>是使用数组实现的String[].
如果你不知道你将拥有多少元素,请使用 List<String>
您可以在容量构造函数参数(new List<String>(10))中给出预期的估计(或最大)元素数,这将是基础数组的初始大小.
如果您有Add()一个项目且该项目没有空间,则将基础数组复制到大小加倍的新数组.
我做什么:当我知道集合的确切大小,我知道我不会改变集合的大小,我使用数组(String[]).否则我用了List<String>.
顺便说一句,这适用于任何类型,而不仅仅是String.