Трудности перехода на VB .NET
Возникает
заманчивая картина: вы запускаете
программу преобразования, немного
дорабатываете полученный
результат, и программа VB
автоматически адаптируется для VB .NET!
Поверьте, этот
путь ведет в тупик. Чтобы в полной
мере использовать преимущества VB .NET,
необходимо основательно
разобраться в объектно-ориентированном
программировании и принципах
работы .NET Framework. Вам не придется
запоминать тысячи методов,
входящих в .NET Framework, но для
сознательного чтения документации
или использования средств IntelliSense,
встроенных в IDE, нужно знать, как
работает .NET. Без хорошего понимания
этого материала вы попросту не
сможете работать в IDE с дизайнерами
форм Windows и Web.
Чтобы
представить масштаб изменений,
достаточно рассмотреть простейший
пример — форму, на которой
находится кнопка. В прежних версиях
VB весь код, связанный с кнопкой (и
выполнявшийся при ее нажатии),
находился в процедуре события Click.
Сразу
предупреждаю: при размещении
кнопки на форме VB .NET среда
программирования генерирует значительно
больший объем кода. В этой книге
мы постараемся показать, почему в
этом коде стоит разобраться —
причем так, чтобы он казался не
сложнее простого обработчика Click.
Приведенный
ниже фрагмент (в основном
автоматически сгенерированный)
размещает кнопку на форме и выводит
окно сообщения при нажатии кнопки.
Числа в скобках к программе не
относятся, они просто используются
для ссылок на строки листинга в
тексте книги.
(1) Public Class
Form1
(2) Inherits System.Windows.Forms.Form
(3) #Region "
Windows Form Designer generated code "
(4) Public Sub New()
(5) MyBase.New()
' Вызов
необходим для работы дизайнера
форм Windows
(6)
InitializeComponent()
'
Дальнейшая инициализация
выполняется ' после вызова
InitializeComponent()
End Sub
' Форма
переопределяет Dispose для очистки
списка компонентов.
(7) Protected
Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If
disposing Then
If Not (components
Is Nothing) Then
components. Dispose()
End If End If
MyBase.Dispose(disposing)
End Sub
(8) Friend
WithEvents Buttonl As System.Windows.Forms.Button
' Необходимо для работы дизайнера форм Windows
Private components
As System.ComponentModel.Container
' ВНИМАНИЕ: следующий фрагмент необходим для дизайнера форм Windows
' Для его модификации следует использовать дизайнер форм.
' Не
изменяйте его в редакторе!
(9) <System.Diagnostics.DebuggerStepThrough()> Private Sub _
InitializeComponent()
'
'Button1
'
Me.Buttonl.Location = New System.Drawing.Point(109, 224)
Me.Buttonl.Name =
"Buttonl"
Me.Button1.Size -
New System.Drawing.Size(200. 48)
Me.Button1.TabIndex
= 0,
Me. Button1. Text =
"Click me!"
'
'Form1
'
Me.AutoScaleBaseSize
= New System.Drawing.Size(5. 13)
Me.ClientSize = New
System.Drawing.Size(292. 216)
Me.Controls.AddRange(New
System.windows.Forms.Control() {Me.Button1})
Me.Name = "Forml"
Me.Text = "First
windows Application"
Me.ResumeLayout (False)
End Sub #End Region
(10) Private Sub Buttonl_C1ick(ByVal sender As System.Object._
ByVal e As System.EventArgs)
Handles Buttonl_Click
MsgBox("Welcome to Visual Basic .NET!")
End Sub
(11) End Class
- Классы
рассматриваются в главе 4.
- Ключевое
слово Inherits описано в главе 5, а
формы Windows — в главе 8.
- Новая
среда программирования
позволяет определять
сворачиваемые фрагменты кода (глава
2).
- Конструктор
New рассматривается в главе 4.
- В
этой строке используется
механизм наследования (глава 5).
- Описание
форм Windows приведено в главе 8.
- Наследование
рассматривается в главе 5, а
метод Dispose упоминается в главах
4 и 5.
- События
описаны в главе 6. Специфика
обработки событий в
приложениях GUI рассматривается
в главе 8.
- Весь
содержательный код этой
процедуры проанализирован в
главе 8.
- См.
главу 8.
- Классы
рассматриваются в главе 4.
Картина была бы
неполной, если бы мы не упомянули о
С#. Большая часть .NET Framework написана
на С#, поэтому некоторые полагают,
что именно С# является настоящим языком
.NET. Хотя С# чуть мощнее VB .NET, 99%
программистов никогда не будут
пользоваться его дополнительными
возможностями.
Тому, кто
никогда не программировал на C/C++,
язык С# может показаться непонятным
и более сложным, чем VB .NET. Кроме того,
VB .NET имеет ряд несомненных
преимуществ перед С#. Ниже
перечислены пять из них, которые
нам кажутся самыми важными:
- Присутствие
многих знакомых функций VB/VBScript (таких,
как Mid, Sin(x) вместо Math.Sin(x) или
FormatNumber) вместо сложных и порой
менее удобных функций .NET Framework.
- Наглядность.
В VB .NET многие понятия
записываются простым
естественным языком. Например,
вместо конструкции С# «:» в VB .NET
используются слова Inherits или
Implements. В С# используются
мудреные слова abstract, sealed и virtual,
а в VB .NET — Must Inherit, Nonlnheritable,
Overridable, Overrides, Shadows. Несомненно,
второй набор выглядит понятнее,
даже если не знать, что
означают эти термины.
- Компиляция
кода происходит в фоновом
режиме, поэтому вы получаете
немедленный отклик от
компилятора (что гораздо лучше
простого лексического анализа
кода, как в С#).
- В VB
.NET не учитывается регистр
символов, а интеллектуальный
редактор автоматически
изменяет регистр в
соответствии с объявлениями. С#,
как и все языки семейства С,
чувствителен к регистру
символов. Людей, привыкших
работать в VB, это сильно
раздражает. Мы подошли к
последней, самой главной
причине:
- VB
.NET сохранил общее сходство с
Visual Basic 6, самым популярным
языком программирования в мире!