Прочитать на английском

Поделиться через


Ошибка компилятора CS0315

Тип valueType нельзя использовать в качестве параметра типа T в универсальном типе или методе TypeorMethod<T>. Нет преобразования-упаковки из "тип_значения" в "тип_ссылки".

Эта ошибка происходит, когда вы ограничиваете универсальный тип конкретным классом и пытаетесь создать экземпляр этого класса, используя тип значения, который не может быть неявно упакован.

Исправление ошибки

  1. Одно из решений — переопределить структуру как класс.

Пример

При компиляции следующего примера возникнет ошибка 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;  
    }  
}  

См. также