Ler em inglês

Compartilhar via


Erro do Compilador CS0315

O tipo "valueType" não pode ser usado como parâmetro de tipo "T" no tipo genérico ou no método "TypeorMethod<T>". Não há conversão boxing de "valueType" para "referenceType".

Esse 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 demarcado nela.

Para corrigir este erro

  1. Uma solução é redefinir o struct como uma classe.

Exemplo

O seguinte exemplo gera o erro CS0315:

C#
// 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;  
    }  
}  

Confira também