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