컴파일러 오류 CS0315

업데이트: 2007년 11월

오류 메시지

제네릭 형식 또는 메서드 'TypeorMethod<T>'에서 'valueType' 형식을 형식 매개 변수 'T'(으)로 사용할 수 없습니다. 'valueType'에서 'referenceType'(으)로의 boxing 변환이 없습니다.
The type 'valueType' cannot be used as type parameter 'T' in the generic type or method 'TypeorMethod<T>'. There is no boxing conversion from 'valueType' to 'referenceType'.

이 오류는 특정 클래스에 대해 제네릭 형식을 제한하고 클래스에 대해 암시적으로 boxing할 수 없는 값 형식을 사용하여 해당 클래스의 인스턴스를 생성하는 경우 발생합니다.

이 오류를 해결하려면

  • 이 오류를 해결하려면 구조체를 클래스로 다시 정의합니다.

예제

다음 예제에서는 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;
    }
}

참고 항목

참조

형식 매개 변수에 대한 제약 조건(C# 프로그래밍 가이드)

Boxing 및 Unboxing(C# 프로그래밍 가이드)