lunes, 8 de octubre de 2007

Operadores C#: as e is

Hace un tiempo me encontre en muchos trozos de codigo con expresiones en c# que contenian el operador as, operador que no conocia y por ende me vi en la obligacion de investigar su proposito.
Para poder explicar el operador as es recomendable primero conocer el operador is. Este es un operador binario que retorna un booleano y se utiliza de la siguiente manera:

bool retorno = objeto is Clase_X

Si el objeto no tiene el valor null y además es posible obtener este objeto como una instancia de la Clase_X (mediante polimorfismo) sin producirse una Excepcion, entonces el valor devuelto es true, en cualquier otro caso el retorno sera false.
Conociendo este operador se puede comprender de manera simple el operador as.
La forma de utilizar el operador as es la siguiente:

Clase_X MiClase = objeto as Clase_X;

Esta expresion es equivalente a lo siguiente:

Clase_X Miclase;
if( objeto is Clase_X ){
Miclase = (Clase_X)objeto;
} else {
MiClase = null;
}

Se entiende?, la idea principal es tener un operador que realiza cast, pero en caso de no ser posible el cast requerido devuelva el valor null y no lance una CastException como lo haria una expresion como la siguiente.

Clase_X Miclase = (Clase_X)objeto;

Espero sea de utilidad a más de alguien.

No hay comentarios: