Nullables y Operador ?. en C#

Los tipos anulables (nullable) en C# permiten a tipos de valor como int o DateTime tener un valor nulo (null). Esto es esencial para modelar datos opcionales o provenientes de bases de datos. El operador de acceso condicional ?. permite acceder de forma segura a miembros evitando excepciones de referencia nula.

Declarar tipos anulables

Puedes declarar un tipo de valor como anulable usando ? después del tipo.

int? edad = null;

if (edad.HasValue) {
    Console.WriteLine($"Edad: {edad.Value}");
} else {
    Console.WriteLine("Edad no especificada.");
}
    

Esto permite representar la ausencia de valor para tipos que normalmente no aceptan null.

Operador ?? (coalescencia nula)

Puedes asignar un valor por defecto usando ??.

int edadReal = edad ?? 18;
Console.WriteLine($"Edad asignada: {edadReal}");
    

Si edad es null, se usa 18.

Uso del operador ?. (acceso condicional)

El operador ?. permite acceder de forma segura a propiedades o métodos evitando NullReferenceException.

Persona persona = null;
Console.WriteLine(persona?.Nombre ?? "Sin nombre");
    

Si persona es null, la expresión devuelve null en vez de fallar.

Encadenamiento seguro

Puedes encadenar varios accesos de forma segura.

Console.WriteLine(persona?.Direccion?.Ciudad ?? "Ciudad desconocida");
    

Evita excepciones si cualquiera de los miembros intermedios es null.

Buenas Prácticas

Usa tipos anulables para modelar datos opcionales de forma clara. Emplea ?. y ?? para evitar errores de referencia nula. Valida entradas y salidas de APIs para mayor seguridad. Mantén tu código legible evitando encadenamientos excesivos.

Ver también

Documentación oficial de Microsoft

Ver más en Microsoft Docs