VB.NET-Äquivalent von C # "As"

79

Was entspricht in VB.NET dem Schlüsselwort C # As wie im Folgenden?

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

Antworten:

102

Es ist TryCast:

Dim x As String = TryCast(y, String)
If x Is Nothing Then ...
Hans Passant
quelle
4
+1 Obwohl ich glaube, dass dies TryCastnicht genau gleichbedeutend ist, asweil TryCastes für Werttypen nicht funktioniert?
MarkJ
7
@Mark: Der as- Operator funktioniert auch nicht mit Werttypen in C #.
Hans Passant
2
Nun, es funktioniert für nullbare Werttypen ... Sie können Folgendes tun: var x = y als int?; if (x == null) ... also sollten Sie in der Lage sein, Dim x = TryCast (y, System.Nullable (Of Integer)) in VB
JoelFan
2
Dies funktioniert nur in sehr ausgewählten Fällen, da C # automatisch eine Boxkonvertierung auf "y" anwendet. Es kann nicht beispielsweise ein Double in ein Int konvertieren?
Hans Passant
1
@ HansPassant C # wird kaum jemals "implizit" einen primitiven Typ (oder einen beliebigen Typ) in einen anderen konvertieren. Sie verwenden die Convert.ToXXX-Methode
enorl76
9

Trycast ist das, wonach Sie suchen.

Dim x = TryCast(y, String)
Morten Anderson
quelle
6

TryCast:

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

Bitte schön:

C # -Code:

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

VB.NET-Äquivalent:

Dim x = TryCast(y, String)
If (x Is Nothing) ...
Alex Essilfie
quelle
4

Dim x = TryCast (y, [String])

Oskar Kjellin
quelle
0

Sie können es verwenden mit ?:

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

Es ermöglicht Ihnen, nullable ohne if:) zu verwalten

evanboissonnot
quelle
1
Es scheint, dass die Frage nicht den ternären Operator
betrifft. Erarbeiten