Partilhar via


Como: Identificar um tipo que permite valor nulo (guia de programação translation from VPE for Csharp)

Você pode usar o translation from VPE for Csharp TypeOf operador para criar um Type objeto representando um tipo que permite valor nulo:

System.Type type = typeof(int?);

Você também pode usar as classes e métodos do System.Reflection espaço para nome para gerar Type objetos que representam tipos Nullable. No entanto, se você tentar obter informações sobre o tipo das variáveis Nullable no tempo de execução usando o GetType método ou a is operador, o resultado é um Type objeto que representa o tipo subjacente, não o tipo que permite valor nulo propriamente dito.

De chamadaGetType em um tipo que permite valor nulo faz com que uma operação de conversão boxing deve ser executada quando o tipo é implicitamente convertido para Object. Portanto, GetType sempre retorna uma Type objeto que representa o tipo subjacente, não o tipo que permite valor nulo.

  int? i = 5;
  Type t = i.GetType();
  Console.WriteLine(t.FullName); //"System.Int32"

The C# é operador também opera no tipo subjacente da Nullable.Portanto, não é possível usar is para determinar se uma variável é um tipo que permite valor nulo. O exemplo a seguir mostra que o isoperador trata um Nullable <int>variável sistema autônomo int.

  static void Main(string[] args)
  {
    int? i = 5;
    if (i is int) // true
      //…
  }

Exemplo

Use o seguinte código para determinar se um Type objeto representa um tipo Nullable. Lembre-se de que esse código sempre retorna FALSO se o Type objeto foi retornado de uma telefonar para GetType, conforme explicado anteriormente neste tópico.

if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) {…}

Consulte também

Referência

Tipos anuláveis (guia de programação C#)

Conversão boxing Nullable Types (guia de programação translation from VPE for Csharp)