Operadores de coalescência nula
Use ?? e ??= para fornecer valores alternativos.
Operadores de coalescência nula é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
O operador ??
O operador de coalescência nula ?? retorna o operando esquerdo quando ele não é nulo; caso contrário, retorna o operando direito. Ele é um valor alternativo compacto.
using System;
class Program {
static void Main() {
int? maybe = null;
int value = maybe ?? -1;
Console.WriteLine(value);
}
}?? escolhe o primeiro não nulo
Se o lado esquerdo tiver um valor, esse valor será escolhido e o lado direito será ignorado.
using System;
class Program {
static void Main() {
int? a = 7;
Console.WriteLine(a ?? 0);
}
}?? com tipos de referência
?? também funciona com tipos de referência, como string, fornecendo um texto padrão quando o valor é nulo.
using System;
class Program {
static void Main() {
string name = null;
Console.WriteLine(name ?? "Guest");
}
}Encadeando ??
Você pode encadear vários valores alternativos; o primeiro que não for nulo será usado.
using System;
class Program {
static void Main() {
string a = null, c = "third";
string b = null;
Console.WriteLine(a ?? b ?? c ?? "last");
}
}?? Retorna o tipo subjacente
Quando o lado esquerdo é int? e o direito é int, o resultado é um int comum, pois o nulo já não pode ocorrer.
using System;
class Program {
static void Main() {
int? maybe = null;
int sure = maybe ?? 0;
Console.WriteLine(sure + 5);
}
}O operador ??=
A atribuição de coalescência nula ??= atribui o lado direito somente se o lado esquerdo for nulo no momento.
using System;
class Program {
static void Main() {
int? count = null;
count ??= 10;
Console.WriteLine(count);
}
}??= preserva os valores existentes
Se a variável já tiver um valor, ??= não fará nada.
using System;
class Program {
static void Main() {
string config = "custom";
config ??= "default";
Console.WriteLine(config);
}
}Inicialização tardia com ??=
??= é perfeito para definir um valor na primeira vez e mantê-lo depois.
using System;
class Program {
static string cache = null;
static string GetData() {
cache ??= "loaded";
return cache;
}
static void Main() {
Console.WriteLine(GetData());
Console.WriteLine(GetData());
}
}?? versus GetValueOrDefault
Ambos fornecem valores substitutos, mas ?? é mais flexível: funciona com tipos de referência e permite que o valor substituto seja qualquer expressão.
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n ?? 5);
Console.WriteLine(n.GetValueOrDefault(5));
}
}?? em argumentos de métodos
Use ?? diretamente para fornecer um valor padrão exatamente onde um valor é necessário.
using System;
class Program {
static void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
static void Main() {
string input = null;
Greet(input ?? "friend");
}
}Comportamento de curto-circuito
O lado direito de ?? é avaliado somente quando o lado esquerdo é nulo, de forma semelhante ao curto-circuito.
using System;
class Program {
static int Compute() {
Console.WriteLine("Computed");
return 42;
}
static void Main() {
int? known = 1;
int result = known ?? Compute();
Console.WriteLine(result);
}
}Verificação rápida
Teste sua compreensão dos operadores de coalescência nula.
Recapitulação
O operador ?? retorna o valor esquerdo se ele não for nulo; caso contrário, retorna o valor direito, e pode ser encadeado. O tipo do resultado deixa de ser anulável quando um valor substituto não nulo é fornecido.
??= atribui somente quando o destino é nulo, sendo ideal para valores padrão e inicialização tardia. Ambos avaliam o lado direito somente quando necessário.
Perguntas Frequentes
A aula “Operadores de coalescência nula” é grátis?
Sim — o texto completo de “Operadores de coalescência nula” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “Operadores de coalescência nula”?
Use ?? e ??= para fornecer valores alternativos. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Operadores de coalescência nula”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Introdução aos tipos de valor anuláveis
- Propriedades HasValue e Value
- Operadores de coalescência nula
- Nullable em cálculos