作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
.NET 提供了一个通用的列表容器,其性能几乎相同(请参阅数组与列表的性能问题)。但是它们在初始化方面有很大的不同。
数组很容易用默认值初始化,并且根据定义它们已经具有一定的大小:
string[] Ar = new string[10];
这允许一个人安全地分配随机项目,比如说:
Ar[5]="hello";
有了列表,事情就更棘手了。我可以看到两种执行相同初始化的方法,这两种方法都不是您所说的优雅:
List<string> L = new List<string>(10);
for (int i=0;i<10;i++) L.Add(null);
或
string[] Ar = new string[10];
List<string> L = new List<string>(Ar);
什么是更清洁的方法?
编辑:到目前为止的答案是指容量,这与预填充列表不同。例如,在刚刚创建的容量为 10 的列表中,不能执行 L[2]="somevalue"
编辑 2:人们想知道为什么我要以这种方式使用列表,因为这不是它们的预期使用方式。我可以看到两个原因:
可以非常有说服力地论证列表是“下一代”数组,增加了灵 active 而几乎没有损失。因此,默认情况下应该使用它们。我指出它们可能不那么容易初始化。
我目前正在编写的是一个提供默认功能的基类,作为更大框架的一部分。在我提供的默认功能中,列表的大小是高级已知的,因此我可以使用数组。但是,我想为任何基类提供动态扩展它的机会,因此我选择了一个列表。
最佳答案
List<string> L = new List<string> ( new string[10] );
关于c# - 如何将 List<T> 初始化为给定大小(相对于容量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466946/
我是一名优秀的程序员,十分优秀!