VB добавляет загрузку кода в ваш проект за спиной.
Самый простой способ увидеть, что происходит, - создать минимальный проект и посмотреть на него с помощью Reflector. Я только что создал новое приложение WinForms с VB и добавил этот класс:
Public Class OtherClass
Public Sub Foo()
Form1.Show()
End Sub
End Class
Скомпилированный код для Foo выглядит так, когда декомпилируется как C #:
public void Foo()
{
MyProject.Forms.Form1.Show();
}
MyProject.Forms
- это свойство в сгенерированном классе MyProject
типа MyForms
. Когда вы начинаете углубляться в это, вы видите довольно много сгенерированного кода там.
C # мог бы, конечно, сделать все это - но у него, как правило, не было такой истории за спиной. Он создает дополнительные методы и типы для таких вещей, как анонимные типы, блоки итераторов, лямбда-выражения и т. Д., Но не совсем так, как это делает VB. Весь код, который создает C #, соответствует написанному вами исходному коду - просто умно преобразован.
Конечно, есть аргументы для обоих подходов. Лично я предпочитаю подход C #, но это не удивительно. Я не понимаю, почему должен быть способ доступа к экземпляру формы, как если бы он был одноэлементным, но только для форм ... Мне нравится язык для работы точно так же, использую ли я классы GUI или что-то еще, в основном.