VB.NET equivalente de C # "As"

79

¿Cuál es el equivalente en VB.NET de la palabra clave C # As , como se muestra a continuación?

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

Respuestas:

102

Es TryCast:

Dim x As String = TryCast(y, String)
If x Is Nothing Then ...
Hans Passant
fuente
4
+1 Aunque creo TryCastque no es exactamente equivalente a asporque TryCastno funciona para tipos de valor.
MarkJ
7
@Mark: el operador as tampoco funciona en tipos de valor en C #.
Hans Passant
2
Bueno, funciona para tipos de valores que aceptan valores NULL ... Puede hacer: var x = y as int ?; if (x == null) ... entonces debería poder hacer Dim x = TryCast (y, System.Nullable (Of Integer)) en VB
JoelFan
2
Esto solo funciona en casos muy selectos porque C # aplica automáticamente una conversión de boxeo a "y". ¿No puede convertir, digamos, un doble en un int?
Hans Passant
1
@HansPassant C # casi nunca "implícitamente" convertirá un tipo primitivo (o cualquier tipo) en otro, usa el método
Convert.ToXXX
9

Trycast es lo que estás buscando.

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

TryCast:

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

Aqui tienes:

Código C #:

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

Equivalente de VB.NET:

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

Dim x = TryCast (y, [String])

Oskar Kjellin
fuente
0

Puedes usarlo con ?:

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

Te permite administrar anulables sin if:)

Evanboissonnot
fuente
1
Parece que la pregunta no es sobre el operador ternario
Elabore