컴파일러 오류 CS0413

형식 매개 변수 ‘type parameter’에는 클래스 형식 제약 조건이나 ‘class’ 제약 조건이 없으므로 ‘as’ 연산자와 함께 사용할 수 없습니다.

이 오류는 제네릭 형식이 as 연산자를 사용하지만 해당 제네릭 형식에 클래스 형식 제약 조건이 없는 경우에 발생합니다. as 연산자는 참조 및 nullable 값 형식에서만 허용되므로 형식 매개 변수를 제약하여 값 형식이 아니도록 해야 합니다. 이 오류를 방지하려면 클래스 형식 제약 조건 또는 참조 형식 제약 조건을 사용합니다.

이는 as 연산자가 값 형식에 사용 가능한 값이 아닌 null을 반환할 수 있고 클래스 형식 제약 조건 또는 참조 형식 제약 조건이 아닌 경우 형식 매개 변수가 값 형식으로 처리되어야 하기 때문입니다.

예시

다음 샘플에서는 CS0413을 생성합니다.

// CS0413.cs  
// compile with: /target:library  
class A {}  
class B : A {}  
  
class CMain  
{  
   A a = null;  
   public void G<T>()  
   {  
      a = new A();  
      System.Console.WriteLine (a as T);  // CS0413  
   }  
  
   // OK  
   public void H<T>() where T : A  
   {  
      a = new A();  
      System.Console.WriteLine (a as T);  
   }  
}