10

不可能(除了使用不同的名称)有几个具有相同名称但实现不同接口的泛型方法吗?

public IList<T> List<T>() where T : class, IMyInterface1
{

    return mylist
}

public IList<T> List<T>() where T : class, IMyInterface2
{

    return mylist
}

谢谢,

4

1 回答 1

12

不,您不能仅通过泛型类型约束来重载。您可以通过类型参数的数量重载,但不能根据它们的约束。

如果你正在实现一个接口,你可以使用显式接口实现——否则我建议只使用不同的名称。老实说,我经常发现使用不同的名字会让事情更清楚。

请记住,您给出的示例无论如何都会引入自然歧义 - 如果类型参数实现了两个接口,您希望调用什么?

于 2012-07-16T08:29:05.453 回答