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
Remova a restrição.
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.