Como celebración por el día del libro, puedes conseguir un 15% de descuento en todos los libros de la web:

Asignador condicional nulo en C#

25 Apr 2025 5 min (0) Comentarios

Hoy vengo a hablar de una funcionalidad que estará disponible en C# 14 junto a la llegada de .NET 10 en noviembre de 2025. Pero a día de hoy ya podemos probarla si utilizamos la versión preview del lenguaje. El asignador condicional de nulos para C#.

 

 

Como es una versión preview (hasta noviembre del 25), NO se debe utilizar para producción. Si quieres que siga haciendo vídeos mostrando las novedades deja un comentario abajo, y bueno si solo las quieres en un video en noviembre con todas a modo resumen dejalo también, aunque ese resumen lo haré si o si todos los años

 

1 - Trabajar con nulos en C# 

 

Dentro del lenguaje de C# tenemos varias formas de tratar con los valores nulos, de hecho tengo un post de 2019 donde ya hablo sobre ellos. Desde entonces en el propio lenguaje han salido varias funcionalidades clave. 

 

Hemos cambiado varias veces cómo comprobar si un valor es nulo, de hecho tengo un post al respecto sobre ello, que tendré que modificar para enlazar este mismo post.

 

Pero no solo hemos cambiado la forma de comprobar valores nulos, hemos cambiado la forma de definirlos en el código, con la llegada de la propiedad nullable podemos definir cuando un tipo puede ser nulo o no, por ejemplo el siguiente código:

Int? age = person?.Age;

Va a comprobar si la variable person es null o no, y si no lo es, asigna el valor de .Age a la variable, y como puede ser un valor nulo lo especificamos con ?; 

Esta funcionalidad no es obligatoria, es más, viene habilitada por defecto, pero en mi opinión es crucial para programar bien en C#.

 

 

2 - Asignar valores nulos en .NET

 

Hemos visto en el punto anterior que podemos asignar un valor nulo a una variable, y el compilador hace un if por detrás el cual comprueba si el valor es nulo o no. 

Pero qué pasa si en vez de a una variable lo hacemos a la propiedad de un objeto? 

Por ejemplo, tenemos el siguiente código:

Person person = new person();
person.Age = 18; 

Estamos asignando el valor 18 a la propiedad Age del objeto person.

Este objeto, podemos ver que no es nulo, porque lo estamos instanciando justo ahí, pero qué sucede si en vez de ser instanciado lo estamos recibiendo en un método, por ejemplo lo hemos leído de una base de datos o de un servicio externo. 

 

Nota: es un escenario simplificado, la realidad es que no deberíamos operar sobre el, pero bueno, para el caso se entiende. 

 

Pues que si hacemos el siguiente código:

public void AssignFixedAge(Person person)
{
    person.Age = 18;
}

Si la variable person es nula el código va a romper en tiempo de ejecución. Así que lo que haremos será indicar la variable como nullable y hacer un if en el código: 

public void AssignFixedAge(Person? person)
{
    if(person is not null)
    {
        person.Age = 18;
    }
}

 

Aquí es donde entra la nueva funcionalidad, la cual nos va a evitar tener que escribir el if a la hora de asignar el valor a una variable que puede o no ser nula. Ya que podemos utilizar el carácter ? para evitar tener que poner todo el if, por ejemplo el ejemplo de antes se nos queda en lo siguiente

public void AssignFixedAge(Person? person)
{
    person?.Age = 18;
}

 

Y es el compilador quien hará el trabajo por nosotros. 

© copyright 2025 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café