0Pricing
C# Academy · Aula

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

  1. Introdução aos tipos de valor anuláveis
  2. Propriedades HasValue e Value
  3. Operadores de coalescência nula
  4. Nullable em cálculos
← Voltar para C# Academy