Построение объекта и вызов метода без присваивания в VB.Net - PullRequest
4 голосов
/ 16 апреля 2010

Я не совсем уверен, как назвать то, что делает C #, поэтому мне не повезло в поиске эквивалентного синтаксиса VB.Net (если он существует, и я подозреваю, что, вероятно, нет).

В c # вы можете сделать это:

public void DoSomething() {
    new MyHelper().DoIt(); // works just fine
}

Но, насколько я могу судить, в VB.Net вы должны назначить вспомогательный объект локальной переменной, иначе вы просто получите синтаксическую ошибку:

Public Sub DoSomething()
    New MyHelper().DoIt() ' won't compile
End Sub

Просто одна из тех любопытных вещей, с которыми я сталкиваюсь изо дня в день, работая над проектами на разных языках - часто есть эквивалент VB.Net, который использует менее чем очевидный синтаксис. Кто-нибудь?

Ответы [ 2 ]

6 голосов
/ 16 апреля 2010

Волшебное слово здесь - Зов.

Public Sub DoSomething()
    Call (New MyHelper()).DoIt()
    Call New MyHelper().DoIt()
End Sub
2 голосов
/ 16 апреля 2010

Гидеон Энгельберт прав в использовании Call. Это лучший вариант.

Другой вариант - использовать оператор With:

With New MyHelper()
    .DoIt()
End With
...