public void TestWinners() { //массивы объектов int nwin = 3; Winners[] wins = new Winners[nwin]; string[] winames = {"Т. Хоар", "Н. Вирт", "Э. Дейкстра"}; В результате создан массив wins, состоящий из объектов класса Winners. Что произойдет, если попытаться задать значения полей объектов, вызвав специально созданный для этих целей метод SetVals? Рассмотрим фрагмент кода, осуществляющий этот вызов: //создание значений элементов массива for(int i=0; i < wins.Length; i++) wins[i].SetVals(winames[i]); На этапе выполнения будет сгенерировано исключение - нулевая ссылка. Причина понятна: хотя массив wins и создан, но это массив ссылок, имеющих значение null. Сами объекты, на которые должны указывать ссылки, не создаются в момент объявления массива ссылочного типа. Их нужно создавать явно. Ситуация аналогична объявлению массива массивов. И там необходим явный вызов конструктора для создания каждого массива на внутреннем уровне. |