Объекты неявно создаются в 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 - это какая-то странная устаревшая особенность?

Ответы на вопрос(2)

Ваш ответ на вопрос