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