using System;
using System.Collections.Generic;
using System.Text;
namespace Estudos_TiposNullable {
/* Autor: Leonardo Melo Santos (leonardomelosantos@gmail.com)
* Data: 26/04/2008
* Descrição: Estudos iniciais sobre "Nullable Types" do .NET 2.0
* Objetivo: Ver tipos primitivos recebendo NULL
*/
class Program {
static void Main(string[] args) {
int? i = null; // A interrogação faz parte da sintaxe
int j = 10;
Console.WriteLine("i=" + i);
Console.WriteLine("j=" + j);
// Vai dar FALSE
Console.WriteLine("(i == j) " + (i == j));
// Vai dar FALSE
Console.WriteLine("(i > j) " + (i > j));
// Vai dar FALSE
Console.WriteLine("(i < j) " + (i < j));
// Usando o "hasValue" para evitar exceções, pois se usarmos
// "xxx.Value" sem fazer o teste antes, uma exceção é levantada
if (i.HasValue) {
Console.WriteLine("'i' não é nulo");
} else {
Console.WriteLine("'i' é nulo");
}
// Usando o o operador "??"
int? y;
y = i ?? 10; //Retorna 10 se "i" for NULL, senão retorna o valor de "i"
Console.WriteLine("y=" + y.ToString());
// K será igual a NULL
int? k = i + j;
Console.WriteLine("k=i+j");
Console.WriteLine("k=" + k.ToString());
// Se "i" for NULL, será retornado o valor default do "int"
// Senão, retorna o valor atribuído a "i"
int x = i.GetValueOrDefault();
Console.WriteLine("x=" + x.ToString());
}
}
}