Question: For the sake of more easily switching between different data structures I'd like to create a generic wrapper class for a 2D array...

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

    public Array2D()
    {
    }
}

```

`private T<,> _fields;` is giving me the error:

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

I'm having a hard time understanding C# generics in this case. How would I be able to solve this?

Answer: 
`<,>` is for referencing unbound generic types. What you are looking for is `[,]`:

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

    public Array2D()
    {
    }
}

```
[`Multidimensional Arrays`](https://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx) is like this:

```
private T[,] _fields;

```

So you should:

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

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

     public Array2D()
     {

     }
}

```

Then to use it:

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

```