CS0312 de erro do compilador

Mensagem de erro

O tipo de 'tipo' não pode ser usado sistema autônomo parâmetro de tipo 'name' no genérico tipo ou método 'nome'.O tipo que permite valor nulo 'tipo' não satisfaz a restrição de 'type2'.

Um tipo que permite valor nulo é diferente de sua contraparte não-nulo; implícito não fazer referência a conversão ou identificar exista conversão entre eles.Uma conversão boxing anuláveis não satisfaz a restrição de tipo genérico.No exemplo a seguir, o primeiro parâmetro de tipo é um Nullable<int> e o segundo parâmetro de tipo é um System.Int32.

Para corrigir este erro

  1. Remova a restrição.

  2. No exemplo a seguir, faça o segundo argumento de tipo de qualquer um dos int? ou object.

Exemplo

O código a seguir gera CS0312:

// cs0312.cs
class Program
{
    static void MTyVar<T, U>() where T : U { }

    static int Main()
    {
        MTyVar<int?, int>(); // CS0312
        return 1;
    }
}

Embora um tipo que permite valor nulo diferente de um tipo não-nulo, vários tipos de conversões são permitidos entre valores nulas e não anuláveis.

Consulte também

Referência

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