英語で読む

次の方法で共有


コンパイラ エラー CS0460

オーバーライドおよび明示的なインターフェイスの実装メソッドの制約は、基本メソッドから継承されるので、直接指定できません

派生クラスの一部であるジェネリック メソッドが基底クラスのメソッドをオーバーライドする場合、オーバーライドされるメソッドに制約を指定することはできません。 派生クラスのオーバーライドする側のメソッドは、基底クラスのメソッドからその制約を継承します。

次の例では CS0460 が生成されます。

// CS0460.cs  
// compile with: /target:library  
class BaseClass
{  
   BaseClass() { }  
}  
  
interface I  
{  
   void F1<T>() where T : BaseClass;  
   void F2<T>() where T : struct;  
   void F3<T>() where T : BaseClass;  
}  
  
class ExpImpl : I  
{  
   void I.F1<T>() where T : BaseClass {}   // CS0460  
   void I.F2<T>() where T : class {}  // CS0460  
}