使用英语阅读

通过


编译器错误 CS0425

方法“method”的类型参数“type parameter”的约束必须与接口方法“method”的类型参数“type parameter”的约束相匹配。 请考虑改用显式接口实现。

如果一个虚泛型方法在派生类中被重写,并且该方法在派生类中的约束与它在基类中的约束不匹配,则会发生此错误。 若要避免此错误,请确保 where 子句在两个声明中相同,或者显式实现接口。

示例 1

下面的示例生成 CS0425:

// CS0425.cs  
  
class C1  
{  
}  
  
class C2  
{  
}  
  
interface IBase  
{  
    void F<ItemType>(ItemType item) where ItemType : C1;  
}  
  
class Derived : IBase  
{  
    public void F<ItemType>(ItemType item) where ItemType : C2  // CS0425  
    {  
    }  
}  
  
class CMain  
{  
    public static void Main()  
    {  
    }  
}  

示例 2

约束不一定要在字面上匹配,只要约束的设置有相同的含义即可。 例如,以下形式是可行的:

// CS0425b.cs  
  
interface J<Z>  
{  
}  
  
interface I<S>  
{  
    void F<T>(S s, T t) where T: J<S>, J<int>;  
}  
  
class C : I<int>  
{  
    public void F<X>(int s, X x) where X : J<int>  
    {  
    }  
  
    public static void Main()  
    {  
    }  
}