Создание объектов в 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.