Null Checking Patterns
Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 33 de 66.
La comprobación de null es una parte esencial de la escritura de código C# robusto. Hay varios patrones que puedes usar para comprobar valores null de forma segura.
Exploremos algunos patrones comunes de verificación de null:
Primero, la comprobación básica de nulidad:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Otro patrón común es el operador null-condicional (?.), que accede de forma segura a los miembros de objetos potencialmente null:
string name = null;
int? length = name?.Length; // length will be null
El operador de coalescencia nula (??) proporciona un valor predeterminado cuando una expresión es nula:
string name = null;
string displayName = name ?? "Unknown"; // displayName will be "Unknown"
También puedes encadenar estos patrones para escenarios más complejos:
string name = null;
int length = (name ?? "").Length; // length will be 0
El método string.IsNullOrWhiteSpace() verifica si una cadena es null, está vacía o contiene solo caracteres en blanco. Es una forma conveniente de validar la entrada de cadena en una sola llamada:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("No name provided"); // this will print
}
string blank = " ";
if (string.IsNullOrWhiteSpace(blank))
{
Console.WriteLine("Blank name provided"); // this will also print
}
Utiliza string.IsNullOrWhiteSpace() cuando desees tratar null, cadenas vacías y cadenas solo con espacios en blanco como entrada inválida equivalente.
Desafío
FácilCrea un método llamado processUserName que tome un parámetro de tipo string userName. El método debe:
- Si
userNamees null, devuelve "No user provided" - Si
userNameestá vacío o solo contiene espacios en blanco, devuelve "Invalid username" - De lo contrario, devuelve "Welcome, [userName]!" donde [userName] es el nombre de usuario real
Recuerda usar patrones de verificación de null apropiados.
Hoja de referencia
Usa == null para comprobación básica de null:
if (name == null)
{
Console.WriteLine("Name is null");
}Usa el operador condicional null ?. para acceder de forma segura a los miembros:
int? length = name?.Length; // length will be null if name is nullUsa el operador de coalescencia null ?? para proporcionar valores predeterminados:
string displayName = name ?? "Unknown";Usa string.IsNullOrWhiteSpace() para comprobar cadenas nulas, vacías o formadas solo por espacios en blanco:
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}Encadena operadores para escenarios complejos:
int length = (name ?? "").Length; // length will be 0 if name is nullPrué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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety