2011-03-27 27 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