コンパイラ エラー CS0413

更新 : 2007 年 11 月

エラー メッセージ

型パラメータ '型パラメータ' にはクラス型制約、または '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);
   }
}