Звучит так, как будто вы хотите свойство с параметрами, что в принципе и является индексатором. Однако вы не можете писать статические индексаторы на C #.
Конечно, вы могли бы просто написать свойство, которое возвращает массив - но я предполагаю, что вы не хотите делать это по причинам инкапсуляции.
Другая альтернатива - написать GetFoo(int x, int y)
и SetFoo(int x, int y, int value)
методы.
Еще одна альтернатива - написать тип-обертку вокруг массива и вернуть , что , в качестве свойства. Тип обертки может иметь индексатор - может быть, только для чтения, например:
public class Wrapper<T>
{
private readonly T[,] array;
public Wrapper(T[,] array)
{
this.array = array;
}
public T this[int x, int y]
{
return array[x, y];
}
public int Rows { get { return array.GetUpperBound(0); } }
public int Columns { get { return array.GetUpperBound(1); } }
}
Тогда:
public static class Foo
{
private static readonly int[,] data = ...;
// Could also cache the Wrapper and return the same one each time.
public static Wrapper<int> Data
{
get { return new Wrapper<int>(data); }
}
}