sábado, 19 de dezembro de 2009

Operador Null-Coalescing ?? (C#)

          Estava lendo "CLR via C#" de Jeffrey Richter noite passada quando me deparei com o operador Null-Coalescing. Sabia sobre sua existência, mas nunca soube realmente para que ele fosse utilizado.
          Muitas vezes, ao codificar, você precisa atribuir uma variável A a uma B apenas se a variável A não for nula. Se A for nula, você quer que B receba outro valor (talvez um default).
          Usando o operador condicional do C#, seu código se pareceria com algo assim:

               string fileName = tempFileName != null ? tempFileName : "Untitled";

          Se tempFileName não for nulo, fileName receberá o valor de tempFileName, caso contrário, fileName receberá o valor "Untitled".
          Utilizando o operador Null-Coalescing, seu código poderia ser abreviado para algo assim:

               string fileName = tempFileName ?? "Untitled";

          A lógica é a mesma: Se tempFileName for nulo, fileName recebe seu valor, caso contrário, recebe "Untitled".
          O operador Null-Coalescing é muito útil com os tipos anuláveis, em particular ao converter esses tipos para seu tipo de origem:

               int? count = null;
                         int amount = count ?? default(int);

          Uma vez que count é nulo, amount receberá o valor default para um tipo inteiro, ou seja, zero.

          Os operadores condicionais e o Null-Coalescing não são os operadores mais auto explicativos que existem, mesmo assim eu amo programar em C#!


          Links interessantes:
               ?? Operator (C# Reference)

[]s

Luis Fernando

Nenhum comentário: