컴파일러 오류 CS0413

업데이트: 2007년 11월

오류 메시지

형식 매개 변수 'type parameter'에는 클래스 형식 제약 조건이나 'class' 제약 조건이 없으므로 'as' 연산자와 함께 사용할 수 없습니다.
The type parameter 'type parameter' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint

이 오류는 제네릭 형식에서 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);
   }
}