Иллюстрированный самоучитель по Visual Basic .NET

Создание объектов в VB.NET

В VB.NET, как и в прежних версиях VB, объекты создаются ключевым словом New (исключение составляют строки и массивы – для создания этих объектов предусмотрена сокращенная запись).

Рассмотрим практический пример – в .NET Framework входит полезный класс Random для работы со случайными числами. По своим возможностям этот класс превосходит функцию Rnd, сохраненную в языке для обеспечения обратной совместимости. Например, класс Random позволяет заполнить байтовый массив случайными числами от 0 до 255 или сгенерировать положительное случайное число в заданном интервале. Однако Random – не функция, а класс, методы которого вызываются с указанием конкретного экземпляра. А для этого необходимо предварительно создать экземпляр (проще говоря, объект) класса Random.

Сделать это можно несколькими способами, и в любом варианте используется ключевое слово New. Самый наглядный, хотя и не самый компактный способ заключается в отделении объявления класса от вызова New:

Dim aRandomlnstance As Random
' Объявление aRandomlnstance = New Random()
' Создание экземпляра

Многие программисты предпочитают использовать сокращенную запись:

Dim aRandomlnstance As New Random
' Экземпляр создается при объявлении

Эта команда эквивалентна приведенному выше фрагменту; в ней используется такая возможность VB.NET, как инициализация переменных при объявлении.

На языке ООП метод New называется конструктором, поскольку он предназначен для создания (конструирования) экземпляров класса.

Примечание
Программисты, работавшие с предыдущими версиям VB, должны обратить внимание на следующее: в VB.NET не поддерживается ключевое слово Set (некоторые побочные эффекты его исчезновения описаны в разделе "Свойства" настоящей главы). Два варианта синтаксиса New различаются только реакцией на исключения, возникающие при создании объектов (см. главу 7)
.

В прежних версиях VB между полной и сокращенной формой вызова конструктора существовали тонкие различия, связанные с тем, что при сокращенной записи создание объекта откладывалось до момента первого использования. В VB.NET эта особенность была исключена.

Некоторые программисты (особенно работающие на С# и Java) предпочитают третий вариант синтаксиса, который выглядит как комбинация первых двух:

Dim foo As Random = New Random()
' В стиле C#/Java

Он ничем не отличается от второго варианта синтаксиса.

Метод New позволяет конструировать объекты в любом выражении VB.NET, если результат соответствует контексту. Следующая команда VB.NET вполне допустима (хотя понять ее непросто, поэтому использовать подобный стиль программирования не рекомендуется):

Consolе.WriteLi net New Random().Next())

Впрочем, подобные конструкции могут встретиться в чужих программах, которые вам придется сопровождать. Особенно часто они используются программистами с опытом работы на C++/Java.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.