Я поддерживаю приложение, которое имеет как компоненты VB.NET, так и C#. Я думал, что эти два языка отличаются только синтаксисом, но я нашел странную функцию в VB.NET, которой нет в C#.Объекты, неявно созданные в vb.net?
В 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 - это какая-то странная унаследованная функция?
вам нужно будет создать новый экземпляр класса перед вызовом ShowDialog() – Ric
@Ric У вас нет. Он компилируется и работает нормально. – Oliver
Хорошо, что функция Function является методом экземпляра, а не методом класса (т. Е. Не является общей функцией). Я считаю, что это довольно странно ... это объект, который не создается в другом месте? – Ric