2011-03-27 64 views
1

这是我的问题: 比方说,我有一类这样的构造:初始化使用另一个数组(C#)某种类型的数组

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

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

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

谢谢!

回答

3

你可以使用LINQ:

int[] b = new int[5] { 0, 1, 2, 3, 4 }; 
A[] a = b.Select(x => new A(x)).ToArray(); 
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,lambda表达式的组合,和改进的通用类型推断真亮为C#3.0这里。

+0

适用于ConvertAll的+1。顺便说一句,第二个版本的恕我直言的复杂性建议在C#2.0中使用旧的循环(这只是几行代码...) – digEmAll 2011-03-27 12:55:54