为什么逆变/协方差要求在C#中使用泛型?

时间:2013-05-03 05:34:40

标签: c# covariance contravariance

要使用协方差/逆变,我需要在接口或委托中使用泛型。 我认为它必须对语言设计问题做一些事情。

例如,这显示我没有问题,但给了我编译错误:没有合格的方法可以覆盖(基本上)。

class Human
{
    public virtual void f(String i) {  } // I want Contravariance 

    public virtual Object f2() {  } // I want Covaraicne
}

class Mike : Human
{
    public override void f(Object o) {  } // Fail.

    public override String f2() {  } // Fail
}

我认为如果我们也可以这样做会很酷,但遗憾的是,在编译器中初始化它有一些隐藏的问题。

我正在谷歌搜索可以给我很好答案的文章,所以任何链接也会受到赞赏。

提前致谢。

0 个答案:

没有答案