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