C#

Usar el operator ternario de C# con nullables

.NET

.NET

Todos los días se aprende algo…

Desde hace mucho tenemos disponible el operador ternario (o condicional) en C#, también conocido como el operador “?“.

El operador ternario sirve para regresar/usar uno de dos posibles valores, dependiendo de una condición boleana.

La estructura es:

condicion-boleana ? valor-si-se-cumple : valor-si-no-se-cumple

Es decir, permite reducir de esto:


int? myVar; //variable int nullable

if(string.IsNullOrEmpty(textbox1.Text))

{ myVar = null; }

else

{ myVar = Convert.ToInt32(textbox1.Text); }

a esto:


myVar =string.IsNullOrEmpty(textbox1.Text) ? null : Convert.ToInt32(textbox1.Text);

Y uno esperaría que el código del segundo bloque compile, pero no es así. En lugar de que funcione, el compilador nos marca el siguiente error:

Type of conditional expression cannot be determined because there is no implicit conversion between ‘<null>’ and ‘int’

Yo llevaba años usando el operador ternario y siempre me pareció ilógico que no se permitiera esto. Y probablemente fue más ilógico el hecho de nunca haber googleado como solucionar esto..ya que la solución es simple.


myVar =string.IsNullOrEmpty(textbox1.Text) ? (int?)null : Convert.ToInt32(textbox1.Text);

o


myVar =string.IsNullOrEmpty(textbox1.Text) ? null : (int?)Convert.ToInt32(textbox1.Text);

Simple…el compilador tenía razon. No hay una conversión implícita entre null e int, pero sí entre null y Nullable<int> (a.k.a. int?). Casteando cualquiera de los lados de la expresión, va a compilar sin problemas.

Espero les sirva.

E-book (libro) gratis de C#

Ebook gratis de C# - Illustrated C# 2008

Ebook gratis de C# - Illustrated C# 2008

La compañia RedGate, que creó los increíbles productos SQL Compare y SQL Prompt, entre otros, publicó esta semana un ebook (o libro electronico) de C# llamado Illustrated C# 2008, que está enfocado a desarrolladores completamente nuevos o que tienen un background de C++ o VB y que quieren migrar a C#.

RedGate es la misma compañía que ahora es dueña del .NET Reflector, creado originalmente por Lutz Roeder.

El autor del ebook es Daniel Solis.

Pagina del Ebook Ilustrated C# 2008

Link directo a bajar el Ebook Ilustrated C# 2008

Usar solamente string.Format para unir strings y variables

Los desarrolladores que apenas vayan empezando, acostúmbrense a usar el método string.Format en lugar de estar concatenando strings y variables!!

Incluso varios desarrolladores avanzados siguen concatenando en lugar de usar string.Format(), lo cual definitivamente hace mucho más difícil que los desarrolladores principiantes se acostumbren a seguir estándares y Mejores Practicas.

La sintaxis para usarlo es de lo más simple, y además hace la línea de código muchísimo más legible, por ejemplo:

labelMensaje.Text = "El usuario " + userName + " realizo el pedido " + numPedido + " el dia " + DateTime.Now.ToString();

Odio ver ese tipo de líneas de código, cuando se puede tener algo tan sencillo como esto:

labelMensaje.Text = string.Format("El usuario {0} realizo el pedido {1} el dia {2}", userName, numPedido, DateTime.Now);

Si la legibilidad no es suficiente mejora, también hay que notar que escribir todo el mensaje en un solo string evita posibles errores de falta de espacios entre palabras y variables, lo cual es muy común que suceda cuando se concatenan variables, es muy fácil que se coman el espacio al terminar un string antes de concatenar, o al iniciar el string después de haber concatenado.

1 2 Scroll to top