2016-01-02 33 views
0

對於我想創建一個通用的包裝類二維數組不同的數據結構之間更容易地切換着想...創建一個通用的Array2D包裝類

public sealed class Array2D<T> 
{ 
    private T<,> _fields; 

    public Array2D() 
    { 
    } 
} 

private T<,> _fields;是給我的錯誤:

The type parameter 'T' cannot be used with type arguments

我在這種情況下很難理解C#泛型。我將如何解決這個問題?

+0

在嘗試構建自己的產品之前,您看過https://msdn.microsoft.com/en-us/library/system.collections.generic.aspx嗎?正如@Agalo建議您需要指定運行時間的類型以瞭解。或者可以嘗試私人列表 _fields;如果您實際上正在尋找兩個暗淡陣列,請嘗試列表<列表> – VivekDev

回答

3

<,>是引用綁定的泛型類型。你所尋找的是[,]

public sealed class Array2D<T> 
{ 
    private T[,] _fields; 

    public Array2D() 
    { 
    } 
} 
+0

謝謝!這是我的一個愚蠢的錯誤。當然,數組是用方括號來定義的! – BadmintonCat

1

申報需要使用[]陣列所以它應該是

T[,] array; 
1

Multidimensional Arrays是這樣的:

private T[,] _fields; 

所以你應該:

public sealed class Array2D<T> 
{ 
    private T[,] _fields; 

    //Or as property 
    public T[,] Fields 
    { 
     get { return _fields; } 
     set { _fields = value; } 
    } 

    public Array2D() 
    { 

    } 
} 

然後使用它:

Array2D<int> arr = new Array2D<int> {Fields = new[,] {{1, 2}, {3, 4}, {5, 6}, {7, 8}}}; 
1

嘗試兩個暗淡陣列的。您的情況可能是List<List<T>>。這也是通用的。並添加使用語句using System.Linq;using System.Linq.Expressions;您也可以獲得非常豐富的功能。