컴파일러 오류 CS0311

제네릭 형식 또는 메서드 '<name>'에서 'type1' 형식을 형식 매개 변수 'T'(으)로 사용할 수 없습니다.'type1'에서 'type2'(으)로의 암시적 참조 변환이 없습니다.

제약 조건을 제네릭 형식 매개 변수에 적용할 때 암시적 ID 또는 참조 변환은 구체적인 인수와 제약 조건의 형식에 있어야 합니다.

이 오류를 해결하려면

  1. 클래스를 만드는 데 사용하는 인수를 변경합니다.

  2. 클래스가 있으면 제약 조건을 제거하거나 기타 필요한 작업을 수행하여 암시적 참조 또는 ID 변환을 활성화할 수 있습니다. 예를 들어 첫 번째 형식에서 두 번째 형식이 상속되도록 지정할 수 있습니다.

예제

// cs0311.cs
class B{}
class C{}
class Test<T> where T : C
{ }

class Program
{
    static void Main()
    {
        Test<B> test = new Test<B>(); //CS0311
    }
}

값 형식 인수를 사용할 때 이 오류가 발생하면 예를 들어 short에서 int까지의 암시적 숫자 변환이 제네릭 형식 매개 변수를 만족하지 않습니다.

참고 항목

참조

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