Odpowiednik języka C # „As” w języku VB.NET

79

Jaki jest odpowiednik słowa kluczowego C # As w języku VB.NET , jak poniżej?

var x = y as String;
if (x == null) ...
JoelFan
źródło

Odpowiedzi:

102

To TryCast:

Dim x As String = TryCast(y, String)
If x Is Nothing Then ...
Hans Passant
źródło
4
+1 Chociaż uważam, że TryCastnie jest dokładnie równoważne, asponieważ TryCastnie działa dla typów wartości?
MarkJ
7
@Mark: operator as również nie działa na typach wartości w C #.
Hans Passant
2
Cóż, to działa w przypadku typów wartości dopuszczających wartość null ... Możesz zrobić: var x = y as int ?; if (x == null) ... więc powinieneś być w stanie zrobić Dim x = TryCast (y, System.Nullable (Of Integer)) w VB
JoelFan
2
Działa to tylko w bardzo wybranych przypadkach, ponieważ C # automatycznie stosuje konwersję pudełkową na „y”. Nie może przekonwertować, powiedzmy, double na int?
Hans Passant
1
@HansPassant C # prawie nigdy nie będzie "implicity" konwertować jednego typu pierwotnego (lub dowolnego typu) na inny, używasz metody Convert.ToXXX
enorl76
9

Trycast jest tym, czego szukasz.

Dim x = TryCast(y, String)
Morten Anderson
źródło
6

TryCast:

Dim x = TryCast(y, String)
if (x Is Nothing) ...
Guffa
źródło
5

Proszę bardzo:

Kod C #:

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

Odpowiednik VB.NET:

Dim x = TryCast(y, String)
If (x Is Nothing) ...
Alex Essilfie
źródło
4

Dim x = TryCast (y, [String])

Oskar Kjellin
źródło
0

Możesz go używać z ?:

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

Pozwala na zarządzanie wartością null bez if:)

evanboissonnot
źródło
1
Wygląda na to pytanie nie jest o trójskładnikowych operator..Elaborate odpowiedź
user9405863