Ler em inglês

Partilhar via


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.

Para corrigir este erro

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

Exemplo

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;  
    }  
}  

Consulte também