如何将c#IList接口类型或其他接口的角色用作类型?

时间:2014-05-15 18:22:08

标签: interface ilist

IList是一个界面。我刚开始学习泛型。我知道接口是一个类实现的契约,它承诺使用它的方法。所以我从未想过使用类似值的类型:

有人可以在使用类型:

这样的界面时向我解释这是什么以及如何考虑它的用法
IList<Writer> someName;

我在这里创建了IList接口的通用类型。但界面不是一个类,所以我应该怎么想象它的角色呢?

或者我误解了什么?

3 个答案:

答案 0 :(得分:0)

如果成员/变量被声明为接口,则可以使用任何实现所述合同的类来实例化它。例如,您可以使用someName实例化List<Writer>(),但不能使用new IList<Writer>()实例化。

IList<Writer> someName = new List<Writer>();
// someName can access any member of IList, but not specific members of List

答案 1 :(得分:0)

IList<Writer> someName;

将保留对实现IList<T>接口的任何类实例的引用,并将Writer指定为类型参数。

答案 2 :(得分:0)

 // Returning from list
        List<Writer> myWriters = new List<Writer>();
        myWriters.Add(new Writer("Andy", "FL"));
        myWriters.Add(new Writer("Mary", "FL"));
        myWriters.Add(new Writer("Ken", "CA"));
        myWriters.Add(new Writer("Robert", "WA"));
        myWriters.Add(new Writer("Brian", "CA"));

        IList<Writer> roWriters;
        roWriters = myWriters.AsReadOnly();

我可以这样说;以上使用IList允许myWriters使用.AsReadOnly();方法?否则就不可能了? .AsReadOnly();是一个IList no List本身的方法吗?