Share via


컴파일러 오류 CS0312

업데이트: 2007년 11월

오류 메시지

제네릭 형식 또는 메서드 'name'에서 'type1' 형식을 형식 매개 변수 'name'(으)로 사용할 수 없습니다. nullable 형식 'type1'이(가) 'type2' 제약 조건을 만족하지 않습니다.
The type 'type1' cannot be used as type parameter 'name' in the generic type or method 'name'. The nullable type 'type1' does not satisfy the constraint of 'type2'.

nullable 형식은 nullable이 아닌 해당 형식과는 다릅니다. 두 형식 간에는 변환을 암시적으로 참조하거나 변환을 식별하지 않습니다. nullable boxing 변환은 제네릭 형식 제약 조건을 충족하지 않습니다. 다음 예제에서 첫 번째 형식 매개 변수는 **Nullable<int>**이며 두 번째 형식 매개 변수는 System.Int32입니다.

이 오류를 해결하려면

  1. 제약 조건을 제거합니다.

  2. 다음 예제에서는 두 번째 형식 인수를 int? 또는 object로 만듭니다.

예제

다음 코드에서는 CS0312 오류가 발생하는 경우를 보여 줍니다.

// cs0312.cs
class Program
{
    static void MTyVar<T, U>() where T : U { }

    static int Main()
    {
        MTyVar<int?, int>(); // CS0312
        return 1;
    }
}

nullable 형식은 nullable이 아닌 형식과 다르지만 nullable 값과 nullable이 아닌 값 사이에 여러 종류의 변환이 가능합니다.

참고 항목

참조

nullable 형식(C# 프로그래밍 가이드)