Interface 如何使用c#IList接口类型或其他接口作为类型?

Interface 如何使用c#IList接口类型或其他接口作为类型?,interface,ilist,Interface,Ilist,IList是一个接口。我刚刚开始学习泛型。我知道接口是一个契约,类实现它承诺使用它的方法。所以我从来没有想过使用like-value类型,比如: 有人能告诉我这是什么,以及在使用类似类型的接口时如何考虑它的用法吗: IList<Writer> someName; IList someName; 我在这里创建IList接口的通用类型。但接口不是一个类,所以我应该如何想象它的角色 或者我误解了什么?如果一个成员/变量被声明为一个接口,那么它可以用实现上述契约的任何类实例化。例如,您可

IList是一个接口。我刚刚开始学习泛型。我知道接口是一个契约,类实现它承诺使用它的方法。所以我从来没有想过使用like-value类型,比如:

有人能告诉我这是什么,以及在使用类似类型的接口时如何考虑它的用法吗:

IList<Writer> someName;
IList someName;
我在这里创建IList接口的通用类型。但接口不是一个类,所以我应该如何想象它的角色


或者我误解了什么?

如果一个成员/变量被声明为一个接口,那么它可以用实现上述契约的任何类实例化。例如,您可以使用
List()
实例化
someName
,但不能使用
new IList()

IList someName=new List();
//someName可以访问IList的任何成员,但不能访问列表的特定成员
输入someName;
将保存对实现
IList
接口的任何类实例的引用,并将
Writer
指定为类型参数。

//从列表返回
 // 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();
List myWriters=new List(); myWriters.Add(新作者(“Andy”,“FL”)); 添加(新作家(“玛丽”,“佛罗里达”); 添加(新作者(“肯”,“CA”); 添加(新作家(“罗伯特”,“华盛顿”); 添加(新作者(“Brian”,“CA”); IList roWriters; roWriters=myWriters.AsReadOnly();

我可以这样说;上面使用IList允许MyWriter使用.AsReadOnly();方法?否则就不可能了。AsReadOnly();IList的方法本身是否没有列表?

好的,那么在用实现上述契约/接口的新类实例化IList之后,下一步我想做什么?IList方法的使用?如果writer还必须实现IList接口,为什么我要将其分配给IList接口?接口的任何成员,但不包括接口中不存在的实例化对象的成员。AsReadOnly()是List方法。您可以使用
myWriters.AsReadOnly()
,但不能使用
roWriters.AsReadOnly()
。您仍然可以同时使用
.Add(item)
。那么IList在这里的作用是什么呢?在这种情况下,它没有什么特殊作用。您可以声明
List rowriter
,这段代码也可以做同样的事情。它通常在请求参数或声明类字段时更有用。例如,对于在屏幕上打印某物列表的方法,您可以要求参数为
IList
,并将
列表
某物[]
传递给它,因为两者都实现了
IList
IList<Writer> someName;
 // 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();