在.NET中,何时使用数组而不是通用列表(List(of T))?
我一直很难看出数组相比通用列表有什么优势,但感觉可能有些地方我理解得不够透彻。性能是其中一个潜在的瓶颈吗?
谢谢。
在.NET中,何时使用数组而不是通用列表(List(of T))?
我一直很难看出数组相比通用列表有什么优势,但感觉可能有些地方我理解得不够透彻。性能是其中一个潜在的瓶颈吗?
谢谢。
如果你正在使用给定类型的固定数量的对象,那么使用List类会带来一些性能上的损失,因为你不会使用它的任何功能。
我现在会毫不羞耻地复制粘贴我编辑过的答案,针对今天在这里提出的非常相似的问题:
我想指出的是,虽然数组具有协变性,但泛型列表没有。例如,类型为
MyChildClass[]
的数组可以轻松地转换为MyParentClass[]
,而List<MyChildClass>
不能直接转换为List<MyParentClass>
。如果您需要协变性,请使用数组、使用LINQ的Cast()方法或其他方式逐个转换每个项目。
使用常规数组的另一个原因是在使用平台调用(执行非托管c/c++代码)时,但这仅适用于非常少量的应用程序。
另外,作为一条备注:如果数组的大小已知,但仍想使用通用列表,请不要忘记将大小传递给构造函数的容量参数。
例如:
List<int> lst = new List<int> (100);