Compiler Error CS0413

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

이 오류는 제네릭 형식에서 as 연산자를 사용하지만 이 제네릭 형식에 클래스 형식 제약 조건이 없는 경우에 발생합니다. as 연산자는 참조 형식에만 사용할 수 있으므로 형식 매개 변수는 값 형식이 아니어야 합니다. 이 오류가 발생하지 않도록 하려면 클래스 형식 제약 조건 또는 참조 형식 제약 조건을 사용합니다.

이 오류가 발생하는 원인은 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);  
   }  
}