Можем ли мы в VB.NET передать исходный объект в качестве аргумента, не создавая его экземпляр? Например, у меня есть две формы в моем проекте formA и formB. Теперь у меня есть этот код.
Public Sub AddForm(Form Outer, Form Inner)
Inner.FormBorderStyle = FormBorderStyle.None
Inner.TopLevel = False;
Inner.Dock = DockStyle.Fill
Inner.WindowState = FormWindowState.Normal
Outer.Controls.Add(Inner)
Inner.BringToFront()
Inner.Show()
End Sub
Теперь я могу использовать это в любом случае, например:
AddForm(formA, formB)
но ...
Взяв тот же код на C#
public static void AddForm(Form Outer, Form Inner)
{
Inner.FormBorderStyle = FormBorderStyle.None;
Inner.TopLevel = false;
Inner.Dock = DockStyle.Fill;
Inner.WindowState = FormWindowState.Normal;
Outer.Controls.Add(Inner);
Inner.BringToFront();
Inner.Show();
}
Я не могу назвать это так:
AddForm(formA, formB);
Это дает ошибку
formB является типом, но используется как переменная.
Вместо этого я должен называть это так:
AddForm(A, new B());
Кроме того, в VB.NET в любом классе, таком как formA, если я наберу formA, я смогу увидеть все объекты и элементы управления, присутствующие там, но не в C#. Опять же, мне нужно создать новый экземпляр, чтобы увидеть все элементы управления. Это становится проблемой, если я хочу манипулировать двумя запущенными и работающими экземплярами друг с другом. Итак, какую основную вещь я здесь упускаю?
(Я программист-любитель, переходящий с VB.NET на C#. Все идет хорошо и чисто, ожидая того, что я недавно понял.)