自动初始化C#列表

时间:2009-07-09 15:02:31

标签: c# .net list collections

我正在创建一个新的C#列表(List<double>)。除了在列表上进行循环之外,还有一种方法可以将所有起始值初始化为0吗?

6 个答案:

答案 0 :(得分:56)

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

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

这是有效的,因为double的默认值已经为0,可能表现稍好一些。

答案 1 :(得分:41)

您可以使用初始化程序:

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将为空。

答案 2 :(得分:37)

使用此代码:

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

答案 3 :(得分:17)

一种可能性是使用Enumerable.Range

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

另一个是:

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

答案 4 :(得分:2)

有点晚了,但可能仍有兴趣: 使用LINQ,尝试

@Override public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrthof(0, width, 0, height, -10f, 10f); gl.glViewport(0, 0, width, height); // ... }

...希望避免复制列表(现在由LINQ决定)。

这应该是对Michael Meadows回答的评论,但我缺乏声誉。

答案 5 :(得分:-4)

对于更复杂的类型:

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

从这里开始:David Hayden's Blog