Expressões Condicionais
Expressões condicionais são trechos de código que avaliam uma condição e retornam um valor com base no resultado dessa avaliação. Elas são uma forma poderosa e concisa de implementar lógica de decisão diretamente em atribuições ou chamadas de método.
As principais expressões condicionais em C# são:
1. Operador Condicional Ternário (?:
)
É a forma mais clássica e concisa de um if-else
que retorna um valor. A estrutura é sempre uma condição, um valor para o caso verdadeiro e um valor para o caso falso.
Sintaxe:
condição ? valor_se_verdadeiro : valor_se_falso;
Exemplo:
int idade = 20;
string status = (idade >= 18) ? "Maior de idade" : "Menor de idade";
// A variável 'status' receberá o valor "Maior de idade".
2. Switch Expression (a partir do C# 8.0)
É uma evolução moderna e mais poderosa da instrução switch
. Ela também é uma expressão (retorna um valor) e usa uma sintaxe mais limpa baseada em correspondência de padrões.
Sintaxe:
variavelParaAvaliar switch
{
padrao1 => resultado1,
padrao2 => resultado2,
_ => resultado_padrao
};
Exemplo:
DayOfWeek dia = DayOfWeek.Monday;
string tipoDeDia = dia switch
{
DayOfWeek.Saturday => "Fim de semana",
DayOfWeek.Sunday => "Fim de semana",
_ => "Dia de semana" // O `_` é o caso padrão (default)
};
// A variável 'tipoDeDia' receberá o valor "Dia de semana".
3. Operadores de Coalescência Nula (??
e ??=
)
Embora sejam especializados para tratar valores null
, eles também funcionam como expressões condicionais, pois escolhem um valor com base na condição de um valor ser nulo ou não.
Operador ??
Retorna o valor do operando da esquerda se ele não for null
; caso contrário, avalia o operando da direita e retorna seu resultado.
Sintaxe:
variavelQuePodeSerNula ?? valorPadrao;
Exemplo:
string nome = null;
string nomeExibicao = nome ?? "Usuário Anônimo";
// 'nomeExibicao' receberá "Usuário Anônimo" porque 'nome' é nulo.
Operador de Atribuição ??=
(a partir do C# 8.0)
Atribui o valor do operando da direita ao operando da esquerda somente se o operando da esquerda for avaliado como null
.
Sintaxe:
variavel ??= expressaoDeAtribuicao;
Exemplo:
List<int> numeros = null;
numeros ??= new List<int>(); // Como 'numeros' é nulo, uma nova lista é atribuída a ele.
numeros.Add(5);