Erro do compilador CS0312
O tipo «tipo1» não pode ser utilizado como parâmetro de tipo «nome» no tipo genérico ou método «nome». O tipo anulável «tipo1» não satisfaz a restrição de «tipo2».
Um tipo de valor anulável é distinto de sua contraparte não anulável; Não existe conversão de referência implícita ou conversão de identificação entre eles. Uma conversão de boxe anulável não satisfaz uma 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
.
Remova a restrição.
No exemplo a seguir, faça o segundo argumento de tipo ou
int?
object
.
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 de valor anulável seja distinto de um 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: