2

To use covariance/contravariance, I need to use generic with either interface or delegate. I assume that it has to do something with the language design problem.

For example, this shows me no problem, but gives me compile errors : There are no qualified methods overridable(basically).

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
}

I assume that It would be cool if we can do that as well, but unfortunately there are some hidden problems to initialize it in the compiler or something.

I'm google-ing for articles which can give me the good answer to this so any links will be appreciated as well.

Thanks in advance.

4

0 回答 0