Erro do Compilador CS0312
O tipo 'type1' não pode ser usado como parâmetro de tipo 'name' no tipo genérico ou método 'name'. O tipo anulável 'type1' não cumpre a restrição de 'type2'.
Um tipo de valor anulável é distinto de seu equivalente não anulável; não existe conversão de referência implícita ou de identificação entre eles. Uma conversão boxing anulável não cumpre uma restrição de tipo genérico. No exemplo a seguir, o primeiro parâmetro de tipo é Nullable<int>
e o segundo, System.Int32
.
Remova a restrição.
No exemplo a seguir, torne o segundo argumento de tipo
int?
ouobject
.
O código a seguir gera o erro 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 de valor anulável seja distinto do tipo não anulável, vários tipos de conversões são permitidos entre valores anuláveis e não anuláveis.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: