VB.Net вызывает New без присвоения значения - PullRequest
3 голосов
/ 10 июня 2010

В C# я могу сделать это:

new SomeObjectType("abc", 10);

Другими словами, я могу вызвать new, не назначая созданный экземпляр какой-либо переменной.Однако в VB.Net кажется, что я не могу сделать то же самое.

New SomeObjectType("abc", 10) ' syntax error

Есть ли способ сделать это в VB.Net?

Ответы [ 4 ]

2 голосов
/ 10 июня 2010

На компиляторе Mono VB работает (vbnc, версия 0.0.0.5914, Mono 2.4.2-r):

Call New SomeObjectType("abc", 10)

Обратите внимание на необходимые Call.

1 голос
/ 10 июня 2010

См. Ответы на этот другой SO Ответ

Так что это должно работать:

With New SomeObjectType("abc", 10)
End With
0 голосов
/ 26 января 2017

Можно определить Sub, чтобы отказаться от построенного объекта:

Sub gobble(dummy As Object)
End Sub

Затем вызовите конструктор следующим образом:

gobble(New SomeClass())

Я использую этот подход в тестах, когда тестирую исключения в конструкторах. Я создаю объект в лямбда-выражении и передаю его в функцию, которая проверяет исключение. Хорошо вписывается в линию.

assertThrows(Of ArgumentOutOfRangeException)(Sub() gobble(New ClassUnderTest("stuff")))
0 голосов
/ 10 июня 2010

Это должен быть правильный синтаксис, например,

Dim name As New String
Dim url As New Uri("http://www.somedomain.com")

У вас есть еще код, где это происходит?

...