operator - convert c#
C#diferencia entre el casting y como? (4)
Posible duplicado:
¿Cuál es la diferencia entre los siguientes moldes en c #?
En C #, ¿hay alguna diferencia entre lanzar un objeto o usar la palabra clave as
? Espero que este código ilustre lo que quiero decir ...
String text = "Hello hello";
Object obj = text;
String originalCast = ((String)obj).ToUpper();
String originalAs = (obj as String).ToUpper();
Gracias
:)
¡Por lo que sé!
El uso de ''como'' devolverá nulo si el ''lanzamiento'' falla donde el lanzamiento lanzará una excepción si falla el lanzamiento.
Aparte de InvalidCastException
que ya se mencionó ...
as
no funcionará si el tipo de destino es un tipo de valor (a menos que sea anulable):
obj as int // compile time error.
Usar ''como'' no arrojará una excepción si el obj no es una cadena. En cambio, devolverá nulo. Que en su caso todavía arrojará una excepción ya que está haciendo referencia inmediatamente a este valor nulo.
as
nunca lanzará una InvalidCastException
. En cambio, devuelve nulo si el molde falla (lo que le daría una NullReferenceException
si obj
en su ejemplo no fuera una string
).