Las estructuras genericas quiere decir que pueden almacenar cualquier tipo de dato, las colecciones genericas en el BCL estan en el namespace System.Collections.Generics.
Ahora en caso de que ninguna de estas colecciones te sean de utilidad, puedes implementar tus propias colecciones genericas.
En tu caso para la matriz podrias tener algo similar a esto:
class Matriz<T>
{
private T[,] datos;
public Matriz<T>(int rows, int columns)
{
datos
= new T
[rows, columns
]; }
public void SetElement(int row, int column, T item)
{
datos[row,column] = item;
}
// Lo metodos que necesites
}
El anterior code sirve para la definicion de una clase generica, ahora te explico que significa. Pues bien, donde dice "T", se reemplazara por cualquier tipo que voz especifiques a la hora de instanciar objetos de esta clase, ahora para instanciar objetos es lo siguiente, y aqui te muestro la utilidad, por ejemplo voz necesitas que tu matriz sea de estructuras punto, pero en algun momento podrias decidir que no sean estructuras punto, sino bitmap por ejemplo:
void AlgunMetodo()
{
Punto p;
p.x = 1;
p.y = 2;
// Defines una matriz que guarde puntos
Matriz
<Punto
> mp
= new Matriz
<Punto
>(2,
2); mp.SetElement(0,0, p);
// Puedes definir otra matriz que guarde bitmaps por ejemplo
Matriz
<Bitmap
> mbm
= new Matriz
<Bitmap
>(2,
2); ....
}
De todos modos si necesitas saber mas sobre generics, puedes ver la documentacion oficial de MSDN:
http://msdn.microsoft.com/en-us/library/512aeb7t.aspxSaludos