VB.NET эквивалент C # «As»


79

Что эквивалентно ключевому слову C # As в VB.NET , как показано ниже?

var x = y as String;
if (x == null) ...

Ответы:


102

Это TryCast:

Dim x As String = TryCast(y, String)
If x Is Nothing Then ...

4
+1 Хотя я считаю, что TryCastэто не совсем то же самое, asпотому TryCastчто не работает для типов значений?
MarkJ

7
@Mark: оператор as также не работает с типами значений в C #.
Hans Passant

2
Что ж, это работает для типов значений, допускающих значение NULL ... Вы можете: var x = y as int ?; if (x == null) ... так что вы должны иметь возможность выполнять Dim x = TryCast (y, System.Nullable (Of Integer)) в VB
JoelFan

2
Это работает только в очень избранных случаях, потому что C # автоматически применяет преобразование упаковки к «y». Он не может преобразовать, скажем, double в int?
Ханс Пассан

1
@HansPassant C # вряд ли когда-либо "косвенно" преобразует один примитивный тип (или любой другой тип) в другой, вы используете метод Convert.ToXXX
enorl76






0

Вы можете использовать его с ?:

TryCast(item, String)?.Substring(10)

Это позволяет вам управлять нулевым значением без if:)


1
Похоже, вопрос не в Тернарном операторе ..
Разработайте
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.