Preparándonos para NET 6: Nullable Reference en NET 6

NULLABLE REFERENCE EN NET 6

En este segundo artículo de la serie Preparándonos para .NET 6, veremos Nullable Reference en NET 6 donde les mostrare como el equipo de Microsoft está adaptando el framework a esta novedad y la importancia que tendrá en las futuras versiones.

¿Sientes que es demasiado pronto para hablar de .NET 6? La verdad es que no, y es por eso que te invito a leer el primer artículo de esta serie donde comienzo explicando la importancia de empezar a indagar sobre esta nueva versión y te enseño a instalar .NET 6 antes que nadie.

Primer artículo de la serie Preparándonos para .NET 6

¿Qué es Nullable Reference?

Nullable Reference es una de las novedades que trajo C# 8 y fue evolucionando con C# 9. Esta característica sirve para indicar que tipos de referencia acepta valores NULL y cuales no.

Al tener esta característica activada, nos aparecerán mensajes de advertencia cuando exista la posibilidad de que una referencia que no acepta valores NULL, reciba un NULL.

¿Cómo se activa Nullable Reference en NET 6?

Hay 2 maneras de activar Nullable Reference en .NET 6. La primera forma es en los archivos de proyecto (los csproj), se debe agregar el tag “<Nullable>enable</Nullable>“. Y la segunda manera de activarlo es agregando “#nullable enable” en cualquier parte de un archivo de código (recomiendo que sea en la parte superior al archivo) para activar esta característica solo en ese archivo código.

Activar Nullable Reference en NET 6 desde el archivo de proyecto
Activar Nullable Reference en NET 6 desde el archivo de proyecto

¿Cómo se usa?

En la siguiente imagen tenemos una clase sencilla con una simple propiedad de tipo string. Al ser string un tipo de referencia, acepta valores NULL, entonces nos aparece una advertencia para que tomemos la decisión de si va a aceptar valores NULL o no.

Código de NET 6 con advertencia de NULL Reference
Código de NET 6 con advertencia de NULL Reference

Si la variable puede tener como valor NULL entonces simplemente al tipo de la propiedad le agregamos un “?” Cómo en la siguiente imagen.

Código de NET 6 sin advertencia de NULL Reference
Código de NET 6 sin advertencia de NULL Reference

Pero en este caso donde tenemos una clase, sabemos que una propiedad no va a tener valores NULL, entonces creamos un constructor que reciba como parámetro el valor de esa propiedad. Esto representa que la propiedad se va a inicializar con un valor y no con NULL.

 Código de NET 6 sin advertencia de NULL Reference y con un constructor
Código de NET 6 sin advertencia de NULL Reference y con un constructor

¿Qué ventaja tendrá usar Nullable Reference en NET 6?

Es simple, la mayor ventaja es que a la hora de desarrollar, dejarás de validar constantemente si una instancia es NULL o no, y evitarás muchísimos errores de la excepción NullReferenceException, como en el siguiente código tan común.

Microsoft ya nos había advertido en 2019

Recuerdo que cuando salió C# 8, el equipo de Microsoft publicó un artículo donde se nos aconsejó adaptar nuestros códigos a la característica de Nullable Reference ya que ellos habían comenzado a actualizar las librerías principales de .NET.

Y en esta ocasión, estoy aquí para aconsejarles exactamente los mismo, para que cuando llegue el momento, podamos comenzar a usar Nullable Reference en NET 6.

Por defecto Nullable Reference en NET 6 va a estar activado

Como les conté en mi articulo anterior, llegue a un nuevo nivel de curiosidad, en el que comencé a investigar los repositorios de las múltiples cuentas de GitHub de Microsoft y me encontré con lo siguiente.

Esta es una captura de pantalla de un issue de GitHub donde se describe una historia de usuario para que este activado Nullable Reference en .NET 6 y todas las librerías relacionadas con el SDK.

User History del equipo de Microsoft
Issue en GitHub de la User Story del equipo de Microsoft

Dicen que no llegaran a implementar esta característica en todas las librerías para NET 6 pero apuntan en tener un 100% de cobertura para futuras versiones.

Conclusión

En este articulo, pudimos ver la importancia que tendrá Nullable Reference en NET 6 y en las futuras versiones. Los invito a darle una oportunidad y comenzar a usar esta característica que existe desde Net Core 3.0.

En el próximo artículo…

En el siguiente artículo de esta serie Preparándonos para .NET 6, que saldrá el lunes 8 de febrero, tendré preparado un listado de las posibles novedades que saldrán con .NET 6 y aparte, aquellas novedades que verán la luz del sol cuando salga el la Preview N° 1.