영어로 읽기

다음을 통해 공유


컴파일러 오류 CS0312

제네릭 형식 또는 메서드 'name'에서 'type1' 형식을 형식 매개 변수 'name'으로 사용할 수 없습니다. nullable 형식 'type1'이 'type2'의 제약 조건을 만족하지 않습니다.

null 허용 값 형식은 null을 허용하지 않는 해당 값 형식과 다릅니다. 암시적 참조 변환이나 식별 변환은 둘 사이에 존재하지 않습니다. 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;  
    }  
}  

null 허용 값 형식은 null을 허용하지 않는 형식과 다르지만 null 허용 값과 null을 허용하지 않는 값 사이에는 다양한 형식의 변환이 허용됩니다.

참고 항목