コンパイラ エラー 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);
}
}