假设我有一个班级ClassA
和一个班级ClassB
,这两个班级彼此完全不同。
例如:
public class ClassA {}
public class ClassB {}
现在我定义了两种方法:
public void Foo<X>(X x) where X : ClassA {}
public void Foo<Y>(Y y) where Y : ClassB {}
如您所见,两个Foo
方法具有相同的名称,相同的返回类型和相同数量的参数。但是,每种方法都有不同的约束。 Foo<X>
只能接受从ClassA
延伸的通用参数,而Foo<Y>
只能接受从ClassB
延伸的通用参数。
然而,编译器抛出以下错误:
类型
Testing.Program
已经定义了一个名为Foo
的成员,其参数类型相同
据我了解,每种方法都接受不同的参数类型。
我错过了什么?