如果我执行以下操作:
List<GenericClass> listObj = new List<GenericClass>(100);
// Do I need this part too?
for (int i = 0; i < 100; i++)
{
listObj[i] = new GenericClass();
}
基本上我是在问 C# 编译器是否会自动为列表中的 100 个 GenericClass 对象触发 GenericClass 构造函数。我在 MSDN 文档以及 StackOverflow 上进行了搜索。
感谢您的帮助。
最佳答案
这不是List
的工作原理。当您指定容量时,它是初始容量,而不是列表中的项目数。在通过 Add
方法添加元素之前,该列表不包含任何元素。列表没有最大容量。由于您是通过 Add 方法添加对象,所以您必须首先更新它们。
事实上,执行您在问题中输入的操作会引发 ArgumentOutOfRange
异常。
对于您正在做的事情,您需要使用数组。
var listObj = new List<GenericClass>();
listObj[0] = new GenericClass(); // ArgumentOutOfRange exception
这会起作用:
for (int i=0;i<100;i++)
{
listObj.Add(new GenericClass());
}
这就是您尝试做的事情:
var arrayObj = new GenericClass[100];
for (int i = 0; i < 100; i++)
{
arrayObj[i] = new GenericClass();
}
关于C# List<GenericClass>(100) 构造原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147486/