Hoje vamos aprender sobre um operador bastante peculiar que o C# possui, é o Operador ??
O operador ?? é chamado de operador união ou coalescing .
Sua definição seguinte a Miscrosoft é :
Retorna o operando esquerdo se o operando não for nula; caso nulo retorna o seguinte.
Bom, não entendi nada!
Um tipo que permite valor nulo pode representar um valor de domínio do tipo, ou o valor pode ser indefinido (neste caso o valor é nulo). Você pode usar a expressividade sintática do operador ?? para retornar um valor apropriado quando o operando da esquerda tiver um tipo nullable cujo valor é nulo.
Se você tentar atribuir um tipo de valor que permite valor nulo em um tipo de valor não nulo sem usar o operador de ?? , você irá gerar um erro de tempo de compilação. Se você usar uma conversão, e o tipo de valor que permite valor nulo é atualmente indefinido, a exceção de InvalidOperationException será gerada.
Deu pra entender melhor?
Bom resumidamente o que ele faz é : Substituir o valor de uma variável nula ou o retorno da mesma, sem gerar nenhuma exceção.
Vamos à um exemplo prático:
class NullCoalesce
{
static int? GetValorNuloInt()
{
return null;
}
static string GerValorNuloString()
{
return null;
}
static void Main()
{
int? x = null;
// Set y para o valor de x, se x não é nulo; caso contrário,
// Se x = null, definir y a -1.
int y = x ?? -1;
// Atribui i para o valor do método retornar se o resultado do método não é nulo
// caso contrário, se o resultado é nulo, definir i para o valor
// default de int.
int i = GetNullableInt() ?? default(int);
string s = GetStringValue();
// Mostra o valor de s, se s não é nulo; caso contrário,
// Exibe a string "não especificado".
Console.WriteLine(s ?? "não especificado");
}
}
Viu que interessante estes exemplos?
Você pode trabalhar com ele de diferentes maneiras, sem precisar validar se a variável é nula ou coisa do tipo.
Artigo Original : MSDN
Nossa página no Facebook está a todo vapor, faça-nos uma visita! 🙂
Um abraço!

