Obiekty niejawnie utworzone w vb.net?

Utrzymuję aplikację, która ma zarówno komponenty VB.NET, jak i c #. Myślałem, że te dwa języki różniły się tylko składnią, ale znalazłem dziwną funkcję w VB.NET, która nie występuje w C #.

W VB.NET mam następującą klasę:

Public Class bill_staff Inherits System.Windows.Forms.Form
    ....
End Class

Jeśli chcę użyć tej klasy w C #, robię to:

using (var frm = new bill_staff())
    frm.ShowDialog();

Jednak w kodzie VB.NET klasa może być używana w następujący sposób:

bill_staff.ShowDialog();

ShowDialog jest zdefiniowany w metadanych w następujący sposób:

Public Function ShowDialog() As System.Windows.Forms.DialogResult

W VB.NET możliwe jest wywołanie metody instancji w klasie. O ile wiem, wydaje się, że niejawnie tworzy nową instancję klasy, a następnie wywołuje metodę na tym obiekcie. W języku C # nie jest to możliwe - metody statyczne muszą być wywoływane w klasie, a metody instancji muszą być wywoływane na obiektach.

Nie mogę znaleźć żadnych informacji na ten temat w Internecie. Jak nazywa się ta funkcja i czy jest to dobra praktyka?

Projekt był początkowo konwertowany z VB6 - czy to jakieś dziwne, starsze funkcje?

questionAnswers(2)

yourAnswerToTheQuestion