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) ...

Odpowiedzi:


102

To TryCast:

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

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


6

TryCast:

Dim x = TryCast(y, String)
if (x Is Nothing) ...

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) ...



0

Możesz go używać z ?:

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

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


1
Wygląda na to pytanie nie jest o trójskładnikowych operator..Elaborate odpowiedź
user9405863
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.