?id=b9df05fa-a931-4c10-a7fd-ea090735028e
El operador doble interrogación en C#
por José M. Alarcón
Los tipos anulables en .NET 2.0 son una interesante característica a la que se le puede sacar bastante partido, como ya expliqué en su momento.
Quiero comentar ahora una cosa que se me pasó entonces: el operador doble interrogante (??), el cual es además muy poco conocido.
Dado que los tipos anulables pueden contener un valor o un nulo debemos realizar continuamente comprobaciones en el código para ver si tenemos nulos o no, algo así (ej.):
int? num1 = 5; //En la realidad lo obtendríamos de una BD o algo así
int num2;
if (num1 == null)
num2 = 0;
else
num2 = num1;
Lo cual es sencillo pero es un rollo de escribir si hay que hacerlo continuamente. Claro que podemos reducir el código usando el operador ? de toda la vida de C#:
int? num1 = 5;
int num2 = (num1==null)?0:num1;
Es idéntico, más reducido, pero tampoco es mejore mucho la legibilidad ¿verdad?
Bien, C# nos ofrece el operador ?? que hace exactamente lo mismo que lo anterior y tiene las virtudes de ser conciso y a la vez legible (si sabes qué siginifica la doble interrogación, claro). Lo anterior quedaría con este operador así:
int? num1 = null;
int num2 = num1??0;
Es fácil de leer si lo interpretas así: asignar a num2 el valor de num1 o un cero si es nulo. Muy útil. Espero que lo disfrutes si no lo conocías :-))
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.