C#列表&;lt;GenericClass&;gt;(100)构造原则 [英] C# List<GenericClass>(100) Construction Principles
本文介绍了C#列表&;lt;GenericClass&;gt;(100)构造原则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我执行以下操作:
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#列表&;lt;GenericClass&;gt;(100)构造原则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文