Mientras lee el código C# me encontré con un curioso fragmento:¿De qué sirve usar "es" seguido de "como" en lugar de "como" seguido de un cheque nulo en C#?
if(whatever is IDisposable) {
(whatever as IDisposable).Dispose();
}
prefiero esperar que se está realizando ya sea como esto:
if(whatever is IDisposable) { //check
((IDisposable)whatever).Dispose(); //cast - won't fail
}
o como esto:
IDisposable whateverDisposable = whatever as IDisposable;
if(whateverDisposable != null) {
whateverDisposable.Dispose();
}
Quiero decir as
es como un yeso, pero devuelve null
en caso de error. En el segundo fragmento, no puede fallar (ya que antes hay una verificación is
).
¿Qué sentido tiene escribir código como en el primer fragmento en lugar de como en el segundo o en el tercero?
Supongo que este último deja una variable en el ámbito, pero siempre lo hago de esa manera de todos modos. Creo que he leído un comentario de Jon Skeet recientemente que también prefiere el último caso. Aunque me sorprendería si no todos optimizaran hasta la misma cosa de todos modos. – Rup
La tercera opción es la preferida, ya que solo tiene un 'as' /' is' y un cheque nulo; eso parece menos trabajo/menos sobrecarga que tener un 'es' primero y un' como' siguiente ... –
He visto el último ejemplo en un libro, me parece más lógico también. – atoMerz