Padrões de Verificação de Nulos
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 um código C# robusto. Há vários padrões que você pode usar para verificar valores null com segurança.
Vamos explorar alguns padrões comuns de verificação de null:
Primeiro, a verificação básica de null:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Outro padrão comum é o operador condicional de nulo (?.), que acessa com segurança membros de objetos potencialmente nulos:
string name = null;
int? length = name?.Length; // length será 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 será "Unknown"
Você também pode encadear esses padrões para cenários mais complexos:
string name = null;
int length = (name ?? "").Length; // length será 0
O método string.IsNullOrWhiteSpace() é uma maneira conveniente de verificar se uma string é nula, vazia ou contém apenas caracteres de espaço em branco — tudo em uma única chamada:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Isso é especialmente útil quando você precisa tratar valores nulos, strings vazias e strings que contêm apenas espaços em branco da mesma maneira. Por exemplo:
string name1 = null;
string name2 = "";
string name3 = " ";
// Todos os três imprimirão a mensagem
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");
Observe que string.IsNullOrWhiteSpace() é diferente de uma simples verificação de nulo. Ela também detecta strings vazias e strings que contêm apenas espaços, tabulações ou outros caracteres de espaço em branco.
Desafio
FácilCrie um método chamado processUserName que receba um parâmetro de string userName. O método deve:
- Se
userNamefor nulo, retornar "No user provided" - Se
userNameestiver vazio ou contiver apenas espaços em branco, retornar "Invalid username" - Caso contrário, retornar "Welcome, [userName]!", em que [userName] é o nome de usuário real
Lembre-se de usar padrões apropriados para verificação de valores nulos.
Experimente 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
1Matrizes Multidimensionais
Noções Básicas de Matrizes 2DDeclaração e Inicialização de Matrizes 2DAcesso aos Elementos de Matrizes 2DLoops Aninhados com Matrizes 2DMatrizes IrregularesOperações Comuns com MatrizesRevisão - Multidimensional4Técnicas de Controle de Fluxo
Retornos AntecipadosCláusulas de GuardaInstruções de Salto (goto)Break e ContinueSimplificando Condicionais Aninhadas7Operadores Lógicos Avançados
Avaliação de Curto-CircuitoOperadores Lógicos CondicionaisPrecedência de OperadoresRevisão - Operadores Avançados2Tomada de Decisões Avançada
Múltiplas CondiçõesLógica Booleana ComplexaComparação entre If e SwitchInstruções Switch AninhadasRevisão - Decisões Avançadas5Tratamento de Exceções
Noções básicas de Try-CatchTipos de ExceçãoMúltiplos blocos CatchTrabalhando com ArquivosBloco FinallyUsando Using vs. Try-FinallyExceções PersonalizadasRecapitulação - Tratamento de Erros3Aprimoramentos de Loops
Desempenho de LoopsIteração de Estruturas ComplexasCada Tipo de LoopRefatoração de LoopsRevisão - Loops Otimizados6Tratamento de Nulos
Fundamentos de Referências NulasTipos de Valor AnuláveisPadrões de Verificação de NulosProgramação DefensivaRecapitulação — Segurança contra NulosPratique por conta própria: Compilador de C# online