コンパイラ エラー CS0449

更新 : 2007 年 11 月

エラー メッセージ

'class' または 'struct' 制約は、他の制約の前に指定されなければなりません。

ジェネリック型またはジェネリック メソッドの型パラメータに対する制約は、特定の順序で指定されている必要があります。まず、class または struct を指定します (存在する場合)。続けて、インターフェイスの制約を指定し、最後にコンストラクタの制約を指定します。このエラーは、class または struct の制約が最初に指定されなかった場合に発生します。このエラーを解決するには、制約句の指定順序を変更します。

使用例

次の例では CS0449 エラーが生成されます。

// CS0449.cs
// compile with: /target:library
interface I {}
public class C4 
{
   public void F1<T>() where T : class, struct, I {}   // CS0449
   public void F2<T>() where T : I, struct {}   // CS0449
   public void F3<T>() where T : I, class {}   // CS0449

   // OK
   public void F4<T>() where T : class {}
   public void F5<T>() where T : struct {}
   public void F6<T>() where T : I {}
}