Patrones de comprobación de valores nulos
Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 33 de 66.
La comprobación de valores null es una parte esencial de la escritura de código C# robusto. Hay varios patrones que puedes usar para comprobar de forma segura si hay valores null.
Exploremos algunos patrones comunes para comprobar null:
Primero, la comprobación básica de if-null:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Otro patrón común es el operador condicional null (?.), que accede de forma segura a los miembros de objetos que podrían ser null:
string name = null;
int? length = name?.Length; // length será null
El operador de fusión de null (??) proporciona un valor predeterminado cuando una expresión es null:
string name = null;
string displayName = name ?? "Unknown"; // displayName será "Unknown"
También puedes encadenar estos patrones para escenarios más complejos:
string name = null;
int length = (name ?? "").Length; // length será 0
El método string.IsNullOrWhiteSpace() es una forma práctica de comprobar si una cadena es nula, está vacía o contiene únicamente caracteres de espacio en blanco: todo en una sola llamada:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Esto es especialmente útil cuando necesitas tratar los valores nulos, las cadenas vacías y las cadenas que solo contienen espacios en blanco de la misma manera. Por ejemplo:
string name1 = null;
string name2 = "";
string name3 = " ";
// Los tres imprimirán el mensaje
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");
Ten en cuenta que string.IsNullOrWhiteSpace() es diferente de una comprobación simple de nulo. También detecta cadenas vacías y cadenas que solo contienen espacios, tabulaciones u otros caracteres de espacio en blanco.
Desafío
FácilCrea un método llamado processUserName que acepte un parámetro de tipo cadena userName. El método debe:
- Si
userNamees nulo, devolver "No user provided" - Si
userNameestá vacío o solo contiene espacios en blanco, devolver "Invalid username" - De lo contrario, devolver "Welcome, [userName]!" donde [userName] es el nombre de usuario real
Recuerda usar patrones adecuados para comprobar valores nulos.
Pruébalo tú mismo
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// Escribe tu código aquí
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online