Как вы используете индексаторы с массивом объектов? - PullRequest
1 голос
/ 19 февраля 2011

Как мы можем использовать индексаторы, если мы используем массив объектов ???

Для одного объекта:

static void Main(string[] args)
{
    MYInd mi = new MYInd();
    mi[1] = 10;
    Console.WriteLine(mi[1]);
    mi[2, 10] = 100;
    Console.WriteLine(mi[2]);

    Console.WriteLine(mi[3, 10]);

Что нужно сделать для массива объектов?

MYInd[] mir = new MYInd[3];

Как мы можем использовать каждый объект и индексатор?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

У вас есть несколько вариантов, если вы хотите повторить, вы делаете

foreach(MYInd mi in mir)
    Console.WriteLine(mi[3, 10]);

Если вы хотите выбрать конкретный MYInd из массива, вы можете сделать это за один шаг

Console.WriteLine(mir[1][3, 10]); // [1] picks out one object from the array

или в два этапа

MYInd mi = mir[1]; // pick out one object from the array
Console.WriteLine(mi[3, 10]);
0 голосов
/ 19 февраля 2011
mir[0][1, 2]

Но вы можете представить это как:

(mir[0])[1, 2]

Скобки не нужны, потому что оператор [разбирается слева направо (например, (1 + 2) + 3 == 1 + 2 + 3. Я думаю, что это называется левой ассоциативностью, но я не уверен, что :-))

Помните, что вы должны инициализировать ОБА и массив и элементы:

var mir = new MyInd[5];
for (int i = 0; i < mir.Length; i++) 
{
    mir[i] = new MyInd();
}
...