自动初始化C#列表

我正在创build一个新的C#列表( List<double> )。 有没有办法,除了在列表上循环,初始化所有的起始值为0?

除了提供的function解决scheme(使用Enumerable类上的静态方法)之外,还可以在构造函数中传递double s数组。

 var tenDoubles = new List<double>(new double[10]); 

这是可行的,因为double的默认值已经是0了,并且可能会稍微好一些。

您可以使用初始化程序:

 var listInt = new List<int> {4, 5, 6, 7}; var listString = new List<string> {"string1", "hello", "world"}; var listCustomObjects = new List<Animal> {new Cat(), new Dog(), new Horse()}; 

所以你可以使用这个:

 var listInt = new List<double> {0.0, 0.0, 0.0, 0.0}; 

否则,使用默认的构造函数,List将是空的。

使用此代码:

 Enumerable.Repeat(0d, 25).ToList(); new List<double>(new double[25]); //Array elements default to 0 

一种可能性是使用Enumerable.Range

 int capacity; var list = Enumerable.Range(0, capacity).Select(i => 0d).ToList(); 

另一个是:

 int capacity; var list = new List<double>(new double[capacity]); 

有点晚了,但也许还是有趣的:使用LINQ,试试

var initializedList = new double[10].ToList()

…希望避免复制列表(这是由LINQ现在)。

这应该是迈克尔·梅多斯的回答评论,但我缺乏声誉。

对于更复杂的types:

 List<Customer> listOfCustomers = new List<Customer> { { Id = 1, Name="Dave", City="Sarasota" }, { Id = 2, Name="John", City="Tampa" }, { Id = 3, Name="Abe", City="Miami" } }; 

从这里: 大卫海登的博客