De esta manera el siguiente código
if (p == null) return "default"; else return p;Que tambíen puede ser escrito así
return (p == null ? "default" : p);Se podría escribir de la siguiente manera
return (p ?? "default");Como vemos, el código es mucho más limpio y legible. Ahora veamos otro pequeño ejemplo donde el operador ?? nos puede ser útil.
string p = obtenerValor(); if (p == null) return "default"; else return p;Supongamos que la llamada al método obtenerValor() es una llamada costosa con multiples accesos a datos y complejos cálculos en memoria y cometieramos el error de por legibilidad usar el operar ?
return (obtenerValor() == null ? "default" : obtenerValor());Vemos que en este caso hemos mejorado la legibilidad del código pero hemos empeorado considerablemente la eficiencia de nuestro código ya que en muchos casos haremos dos llamadas al método obtenerValor. En este caso el operador ?? viene a nuestro rescate quedando el código de la siguiente manera
return (obtenerValor() ?? "default");
Happy coding!
Más referencias | El operador ??
Vaya, me gusta como queda. Un poco dependiente del lenguaje, pero nadie ha dicho que no haya que conocer el lenguaje previamente. Basicamente se podría resumir en el operador devuelve un valor por defecto si es null :-)
ResponderEliminarEfectivamente es eso, devolver un valor por defecto si es null. La duda que me queda es como transformará el compilador ese código, porque si al final se traduce en un if..then...else no le veo la ganancia.
ResponderEliminarPues no tengo ni idea y menos fuera del mundo Java. Pero siendo algo que se ha de analizar en tiempo de ejecución, no te extrañe que el mecanismo interno puede ser algo así.
EliminarTampoco hay que darle muchas vueltas, computacionalmente la operación seguro que tiene un coste despreciable, por lo que yo sigo creyendo que la legibilidad prima.