Null Checking Patterns
Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 33 de 66.
A verificação de null é uma parte essencial da escrita de código C# robusto. Existem vários padrões que você pode usar para verificar valores null de forma segura.
Vamos explorar alguns padrões comuns de verificação de null:
Primeiro, a verificação básica de nulidade:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Outro padrão comum é o operador condicional nulo (?.), que acessa com segurança membros de objetos potencialmente nulos:
string name = null;
int? length = name?.Length; // length will be null
O operador de coalescência nula (??) fornece um valor padrão quando uma expressão é null:
string name = null;
string displayName = name ?? "Unknown"; // displayName will be "Unknown"
Você também pode encadear esses padrões para cenários mais complexos:
string name = null;
int length = (name ?? "").Length; // length will be 0
O método string.IsNullOrWhiteSpace() verifica se uma string é null, vazia ou contém apenas caracteres de espaço em branco. É uma maneira conveniente de validar a entrada de string em uma única chamada:
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
}
Use string.IsNullOrWhiteSpace() quando quiser tratar null, strings vazias e strings apenas com espaços em branco como entrada inválida equivalente.
Desafio
FácilCrie um método chamado processUserName que recebe um parâmetro string userName. O método deve:
- Se
userNamefor null, retorne "No user provided" - Se
userNameestiver vazio ou conter apenas espaços em branco, retorne "Invalid username" - Caso contrário, retorne "Welcome, [userName]!" onde [userName] é o nome de usuário real
Lembre-se de usar padrões apropriados de verificação de null.
Folha de consulta
Use == null para verificação básica de nulo:
if (name == null)
{
Console.WriteLine("Name is null");
}Use o operador condicional nulo ?. para acessar membros de forma segura:
int? length = name?.Length; // length will be null if name is nullUse o operador de coalescência nula ?? para fornecer valores padrão:
string displayName = name ?? "Unknown";Use string.IsNullOrWhiteSpace() para verificar strings nulas, vazias ou apenas com espaços em branco:
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}Encadeie operadores para cenários complexos:
int length = (name ?? "").Length; // length will be 0 if name is nullExperimente você mesmo
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// Escreva seu código aqui
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
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