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!