Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив объектов, ошибка при обращении 
V
    Опции темы
Rickert
Дата 23.4.2008, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Код
aTestClass t = new aTestClass(), t2 = new aTestClass();
int size = 5;
aTestClass[] testArray = new aTestClass[size];

for (int i = 0; i < size; i++)
{
  testArray[i].Moon += 5;
}

Почему вываливается из проги с ошибкой? Я не произвёл какую-нибудь инициализацию объектов?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Fox21
Дата 23.4.2008, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



Масив ты инициализировал,  а данные в него загнал?
Ты обращаешся к i му елементу , но  проверь  какое колличество  элементов содержит массив  smile 

PM MAIL   Вверх
Wizard_Memfis
Дата 23.4.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 1
Всего: 4



То есть Fox21 имел в виду, что ты выделил память под массив
Код

aTestClass[] testArray = new aTestClass[size];

Но так как массив содержит в себе ссылочный тип, то нужно еще выделить память отдельно под каждый элемент массива, а сейчас у тебя там null. То есть
Код

for (int i = 0; i < size; i++)
{
testArray[i]=new aTestClass();
}

 smile 

P. S. Для value-типов такого делать ненужно.

Это сообщение отредактировал(а) Wizard_Memfis - 23.4.2008, 09:42
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
Rickert
Дата 24.4.2008, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



solved smile 

Это сообщение отредактировал(а) Rickert - 24.4.2008, 03:36


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 28.4.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



А как создать массив не ссылочных типов?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
mr.DUDA
Дата 28.4.2008, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Rickert @  28.4.2008,  10:43 Найти цитируемый пост)
А как создать массив не ссылочных типов?

Объявить aTestClass как struct. Или создать массив int-ов и т.п.  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Rickert
Дата 28.4.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Эвано как...


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
mr.DUDA
Дата 28.4.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Дык это ж очевидно и сишнику: в твоём коде создаётся массив указателей, где каждый указатель NULL.  smile 

А структурные типы в массиве лежат плоским куском памяти, поэтому инициализируются при создании массива.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1004 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.