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?