Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2014, 17:12   #1
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 215
По умолчанию Массив классов, ссылочных типов.

Такой простой код.

Element[] e = new Element[10];

Скажите мне почему после этого нужно еще раз проходиться по массиву и создавать каждый e[i] элемент массива ?
Вот что тогда делает верхний код, для чего он выделяет память в размере десяти элементов? Или он вообще ничего не делает ?
IT-Lopata вне форума Ответить с цитированием
Старый 04.04.2014, 23:04   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Это же очевидно.
Создание массива создаёт только массив, и в случае если элементы - типы значения (value-types) то они инициализируются по умолчанию - инты в 0, булы в false , строки в пустую строку, любые не типы значения , а типы ссылочные (reference types) инициализируются в null , т.к. ссылочный тип это указатель, а значение указателя по умолчанию - null. Чтобы иметь созданный объект - его надо инициализировать конструктором, при этом сам объект создаётся в управляемой памяти, а ссылка на него записывается в этот указатель (который является элементом массива. хотя и для обычных переменных ссылочных типов всё точно также работает, т.е. массив тут ни на что не влияет).
phomm вне форума Ответить с цитированием
Старый 04.04.2014, 23:25   #3
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
строки в пустую строку
строка тоже ссылочный тип, тоже null будет. а в целом да
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 04.04.2014, 23:45   #4
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 215
По умолчанию

Цитата:
ссылочный тип это указатель, а значение указателя по умолчанию - null
а теперь ясно то есть это массив ссылок с null и никакого создания классов не было.
IT-Lopata вне форума Ответить с цитированием
Старый 05.04.2014, 21:51   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

так самому массиву тоже место под солнцем .. т.е. в озу надо, в астрале не умеет жить
eval вне форума Ответить с цитированием
Старый 05.04.2014, 21:54   #6
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 215
По умолчанию

ну что ж это он очень зря не умеет, нормальные массивы должны уметь там жить
IT-Lopata вне форума Ответить с цитированием
Старый 05.04.2014, 22:09   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

тогда вы форумом ошиблись, эксрасенсы на другом
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив классов David Villa Общие вопросы C/C++ 19 08.05.2012 10:48
Объявление ссылочных переменных _-Re@l-_ Общие вопросы C/C++ 5 14.03.2011 12:32
Шаблоны. Создать отедльный конструктор копирования для типов, другой для классов TwiX Общие вопросы C/C++ 3 19.09.2010 16:29
Уничтожение ссылочных массивов. jojahti Общие вопросы C/C++ 2 22.08.2009 01:03
Массив классов nns2009 Общие вопросы C/C++ 15 03.02.2009 00:47