2
class Program
{
    static void Main(string[] args)
    {
        //GrandFather gf = new Son();
        IGF<Father> igf = new MyClass();
    }
}
public class Father
{

}
public class Son : Father
{
}
public class MyClass : IGF<Son>
{
    public void Method()
    {
        //DoSomething
    }
}
public interface IGF<T> where T : Father
{
    void Method();
}

大家好,我在使用泛型类和超类时遇到一个问题。谁能告诉我为什么第 6 行是错误的,当我们使用列表时,我们总是说 IList ss=new List();

4

1 回答 1

5

如果您使用的是 C# 4.0,则可以将out关键字添加到IGF实现中以使其成为协变接口。这允许您拥有一个带有基类的泛型(此处Father),并让它指向具有派生泛型类型的同一接口的实例(Son)。

于 2012-11-13T01:39:35.113 回答