コンパイラ エラー CS0456

更新 : 2007 年 11 月

エラー メッセージ

型パラメータ '型パラメータ名 1' は '制約' 制約を含むので、型パラメータ '型パラメータ 2' の制約として '型パラメータ 1' を使用することはできません。

値型の制約は、別の型パラメータで制約として使用できないように、暗黙的にシールされます。値型はオーバーライドできないためです。このエラーを解決するには、値型の制約を 1 つ目の型パラメータを使って間接的に指定するのではなく、2 つ目の型パラメータに直接記述します。

使用例

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

// CS0456.cs
// compile with: /target:library
public class GenericsErrors
{
   public class G5<T> where T : struct
   {
      public class N<U> where U : T {}   // CS0456
      public class N2<U> where U : struct {}   // OK
   }
}