2011-02-19 3 views
1

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

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

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

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

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

спасибо за ответ. Но я попробовал это, и это дало мне исключение. Исключение: ссылка объекта не установлена ​​на экземпляр объекта –

+0

@ Томас, вполне вероятно, что вы инициализировали массив (с ключевым словом 'new', которое вы написали в своем вопросе), но не самими объектами. Попробуйте 'for (int i = 0; i mpontillo

+0

Большое спасибо. Большая помощь. –

0
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(); 
} 
+0

спасибо за ответ. Но я попробовал это, и это дало мне исключение. Исключение: ссылка объекта не установлена ​​в экземпляр объекта. –

+0

Вы должны инициализировать массив AND элементами массива. var mir = new MyInd [5]; for (int i = 0; i xanatos

+0

Это сработало. Спасибо большое. –