Erro do compilador CS0315
O tipo 'valueType' não pode ser usado como parâmetro de tipo 'T' no tipo genérico ou método 'TypeorMethod<T>'. Não há conversão de boxe de 'valueType' para 'referenceType'.
Este erro ocorre quando você restringe um tipo genérico a uma classe específica e tenta construir uma instância dessa classe usando um tipo de valor que não pode ser implicitamente encaixotado para ele.
- Uma solução é redefinir a struct como uma classe.
O exemplo a seguir gera CS0315:
// cs0315.cs
public class ClassConstraint { }
public struct ViolateClassConstraint { }
public class Gen<T> where T : ClassConstraint
{
}
public class Test
{
public static int Main()
{
Gen<ViolateClassConstraint> g = new Gen<ViolateClassConstraint>(); //CS0315
return 1;
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: