IRONSOFTWAREHOME

Entendendo o operador de coalescência nula em C#

Entendendo o operador de coalescência nula em C# (?? e ??=)

O operador de coalescência nula (??) em C# permite que os desenvolvedores simplifiquem a lógica de verificação de nulos, reduzindo a verbosidade do código e melhorando a legibilidade. Em vez de escrever longas condições if-else, este operador fornece uma maneira concisa de atribuir valores alternativos quando um valor nulo é encontrado. Neste artigo, exploraremos detalhadamente o operador de coalescência nula acompanhando o vídeo de Gerald Versluis, "[** Entendendo o operador de coalescência nula em C# (?? e ??=)** Vamos analisar as seções principais do vídeo e como Gerald demonstra esse recurso útil do C#.

Introdução

No início do vídeo, Gerald apresenta o operador de coalescência nula como um recurso poderoso do C# que reduz significativamente o número de linhas de código necessárias para a verificação de valores nulos. Ele enfatiza que esse operador simplifica as verificações condicionais e torna o código mais legível. Para ilustrar seus benefícios, Gerald apresenta um aplicativo de exemplo onde implementa e explica vários casos de uso do operador de coalescência nula.

Exemplo de esboço de aplicativo

Gerald começa configurando um aplicativo de console simples. Ele menciona que, em vídeos anteriores, usou o site .NET para demonstrações, mas devido a limitações de versão (compatível apenas com C# 7), ele passou a usar o Visual Studio para Mac. Ele garante que os exemplos também funcionarão no Visual Studio para Windows.

Para preparar a demonstração, Gerald cria uma classe básica Person com uma única propriedade Name:

public class Person 
{
    public string Name { get; set; }
}

Em seguida, ele inicializa uma instância dessa classe para demonstrar como o operador de coalescência nula funciona em cenários do mundo real.

Substituir verificação de nulo por operador de coalescência de nulos (??)

Gerald agora demonstra como o operador de coalescência nula (??) pode ser usado para simplificar a lógica de verificação de nulos. Ele atribui null à propriedade Name e então usa ?? Para fornecer um valor alternativo:

var name = person.Name ?? "Gerald";

Gerald explica que, antes desse operador, os desenvolvedores usavam uma instrução if:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

Ao usar ??, essa lógica é reduzida a uma única linha. Quando person.Name é null, "Gerald" é atribuído; caso contrário, person.Name mantém seu valor. Ele executa o programa e confirma que a saída está correta.

Coalescência nula para lançar exceções

Em seguida, Gerald explora outro caso de uso: lançar exceções usando o operador de coalescência nula. Em vez de fornecer um valor alternativo, ele demonstra como lançar uma exceção ao encontrar um valor nulo:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Gerald destaca que isso é particularmente útil ao trabalhar com parâmetros de método ou propriedades onde valores nulos não devem ser permitidos. Ele explica que esse recurso foi introduzido no C# 7 ou 8, dependendo das configurações do projeto. Executar o código com um valor null para person.Name resulta em um ArgumentNullException, efetivamente prevenindo referências nulas não intencionais.

Atribuição de composto coalescente nulo (??=)

Gerald passa a discutir o operador de atribuição composta coalescente nula (??=), que fornece uma maneira ainda mais simplificada de atribuir valores padrão. Em vez de escrever:

if (person.Name == null)
{
    person.Name = "Gerald";
}

Ele simplifica isso com:

person.Name ??= "Gerald";

Gerald explica que ??= atribui o valor especificado somente se o operando à esquerda for nulo. Se person.Name já tiver um valor, ele permanece inalterado. Este operador é particularmente útil para inicializar campos ou garantir que as variáveis ​​nunca permaneçam nulas.

Combinando com o operador condicional nulo

Na seção final, Gerald demonstra como o operador de coalescência nula pode ser combinado com o operador condicional nulo (?.). O operador condicional nulo permite acesso seguro a propriedades sem causar um NullReferenceException. Ele fornece um exemplo:

var length = person?.Name?.Length ?? 0;

Gerald explica que isso garante que se person ou Name for null, o resultado seja padronizado para 0 em vez de lançar uma exceção. Essa combinação é útil ao trabalhar com tipos de referência anuláveis ​​ou hierarquias de objetos complexas.

Conclusão

Ao longo do vídeo, Gerald Versluis explica de forma eficaz o poder do operador de coalescência nula (??) e da atribuição composta de coalescência nula (??=). Ele demonstra como esses operadores podem substituir as verificações de nulo tradicionais, tornando o código mais conciso e legível. Ao aproveitar esses recursos, os desenvolvedores podem escrever aplicativos C# mais limpos e eficientes.

Se você estiver interessado em ver esses conceitos em ação, confira o vídeo completo de Gerald Versluis sobre "Entendendo o operador de coalescência nula em C# (?? e ??=)."

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

OR
bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.