更新:2007 年 11 月
错误消息
方法“method”的类型参数“type parameter”的约束必须和接口方法“method”的类型参数“type parameter”的约束匹配。请考虑改用显式接口实现。如果一个虚泛型方法在派生类中被重写,并且该方法在派生类中的约束与它在基类中的约束不匹配,则会发生此错误。若要避免此错误,请确保 where 子句在两个声明中相同,或者显式实现接口。
示例
下面的示例生成 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() { } } |
约束不一定要在字面上匹配,只要约束的设置有相同的含义即可。例如,以下形式是可行的:
复制代码 | |
---|---|
// 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() { } } |