Объекты неявно создаются в vb.net?
Я поддерживаю приложение, которое имеет компоненты VB.NET и C #. Я думал, что эти два языка отличаются только синтаксисом, но я нашел странную особенность в VB.NET, которой нет в C #.
В VB.NET у меня есть следующий класс:
Public Class bill_staff Inherits System.Windows.Forms.Form
....
End Class
Если я хочу использовать этот класс в C #, я делаю это:
using (var frm = new bill_staff())
frm.ShowDialog();
Однако в коде VB.NET класс можно использовать так:
bill_staff.ShowDialog();
ShowDialog
определяется в метаданных следующим образом:
Public Function ShowDialog() As System.Windows.Forms.DialogResult
Поэтому в VB.NET можно вызывать метод экземпляра для класса. Насколько я могу судить, кажется, что это неявно создает новый экземпляр класса, а затем вызывает метод для этого объекта. В C # это невозможно - статические методы должны вызываться для класса, а методы экземпляра должны вызываться для объектов.
Я не могу найти никакой информации об этом в Интернете. Как называется эта функция, и является ли это хорошей практикой?
Проект изначально был преобразован из VB6 - это какая-то странная устаревшая особенность?