Отправляет email-рассылки с помощью сервиса Sendsay

[prg] создание textbox C# вручную

Здравствуйте, господа программисты преимущественно программисты на C#
Есть такой код:
TextBox[] tB = new TextBox[4];
for (int j = 0; j < 4; j++)
{
tB[j].Enabled = true;
tB[j].Visible = true;
tB[j].Location = new System.Drawing.Point(20 + j * 50, 110);
}
При отладке получаю такое сообщение
System.NullReferenceException не обработано
HResult=-2147467261
Message=Ссылка на объект не указывает на экземпляр объекта.
Почему? Если я как и положено выделил память.
Прошу знающих помочь (на goole не отправлять, там я уже был).

Ответить   Thu, 11 Dec 2014 14:55:27 +0300 (#3180009)

 

Ответы:

Вопрос снят. Оказывается при объявлении массива
Надо дописывать еще так:
tB[i] = new System.Windows.Forms.TextBox();
почему это нужно делать при создания массива, но не нужно
для штучного элемента всмысле где логика не знаю, потому и забыл про эту
ерунду.

Ответить   Thu, 11 Dec 2014 16:30:53 +0300 (#3180096)

 

Это не ерунда, а основы. В любом вразумительном руководстве по C# сказано,
что элементы ссылочного типа инициализируются null.

Логика состоит в том, что в случае с ссылочными элементами массив -- это
всего лишь набор ссылок на объекты указанного типа, то есть при объявлении
массива памяти выделяется ровно столько, сколько нужно, чтобы хранить ссылки
в указанном количестве, но не сами объекты.
То есть создание объектов не происходит и ссылкам присваивается значение
null.
Компилятор не может угадать, в какой момент времени вы захотите
инициализировать тот или иной элемент массива и какой конструктор вы
захотите использовать для этого.
А инициализировать каждый элемент массива в момент объявления массива, да
ещё и конструктором по умолчанию было бы непростительной тратой времени и
ресурсов.

Ответить   "i_chay" Thu, 11 Dec 2014 18:25:03 +0300 (#3180133)

 

Здравствуйте Константин,

Если я правильно понимаю, Вы зарезервировали место, но сам объект не
создали.
В цикле задайте:
tB[j] = new TextBox();

С уважением
Владимир

Ответить   vkon@f*****.de Thu, 11 Dec 2014 15:20:53 +0100 (#3180131)