使用另一个数组(C#)初始化某种类型的数组

时间:2011-03-27 12:44:21

标签: c#

这是我的问题: 假设我有一个带有这样一个构造函数的类:

Class A {
   private int i;
   public A(int new_i) {
      i = new_i;
   }
}

我可以使用int数组初始化A数组吗? 如果是这样,我该怎么办? 我想的是:

int[] b = new int[5] { 0,1,2,3,4}; 
A[] a; 
a = new A[](b);

谢谢!

2 个答案:

答案 0 :(得分:6)

var a = Array.ConvertAll(b, item => new A(item));

这里的优点是它将使用正确的大小创建,没有任何中间步骤 - 加上它没有LINQ。

在C#2.0中,它有点丑陋 - 以下是 相同的

A[] a = Array.ConvertAll<int,A>(b,
    delegate(int item) { return new A(item); });

var,lambdas和改进的泛型类型推断的组合在这里真正为C#3.0发光。

答案 1 :(得分:3)

您可以使用LINQ:

int[] b = new int[5] { 0, 1, 2, 3, 4 }; 
A[] a = b.Select(x => new A(x)).ToArray();