猿问

IEnumerable和List有什么区别?

RT~~~~~~~~~~~~~~~~~~~~~~

largeQ
浏览 1032回答 1
1回答

婷婷同学_

如下IList接口可以使用更多的方法。比如你看一个集合是否包含相应实体,IEnumerable不行,而IList里有Contains,相应的实现了IList的可以添加,删除相应实体。而IEnumerable不行。但是这不是说IList就比IEnumerable好,就是因为IList实现的功能多,相对来说限制大了。你看Object,任何类都可用作Object,这就是因为他简单。同理,能为IList表达的数据集,一定能为IEnumerable表达,而能为IEnumerable表达不一定能为IList表达。你可以想想Linq To Object里的方法为什么是对IEnumerable接口了而不是选择IList接口。性能对于我们来说不是问题,就算是问题,你问的性能是什么?是IEnumerable得到Current快还是什么的?那么我想说,这是接口,他本身没有实现,怎么比较性能,就算有,也是List<T>之类的类才会有的。public&nbsp;interface&nbsp;IEnumerable{&nbsp;&nbsp;&nbsp;&nbsp; IEnumerator&nbsp;GetEnumerator();}public&nbsp;interface&nbsp;IEnumerator{&nbsp;&nbsp;&nbsp; bool&nbsp;MoveNext();&nbsp;&nbsp;&nbsp; object&nbsp;Current&nbsp;{&nbsp;get; }&nbsp;&nbsp;&nbsp; void&nbsp;Reset();}public&nbsp;interface&nbsp;IList&nbsp;: ICollection, IEnumerable{&nbsp;&nbsp;&nbsp;&nbsp;// Methods&nbsp;&nbsp;&nbsp; int&nbsp;Add(object value);&nbsp;&nbsp;&nbsp; void&nbsp;Clear();&nbsp;&nbsp;&nbsp; bool&nbsp;Contains(object value);&nbsp;&nbsp;&nbsp; int&nbsp;IndexOf(object value);&nbsp;&nbsp;&nbsp; void&nbsp;Insert(int index, object value);&nbsp;&nbsp;&nbsp; void&nbsp;Remove(object value);&nbsp;&nbsp;&nbsp; void&nbsp;RemoveAt(int index);&nbsp;// Properties&nbsp;&nbsp;&nbsp; bool&nbsp;IsFixedSize&nbsp;{&nbsp;get; }&nbsp;&nbsp;&nbsp; bool&nbsp;IsReadOnly&nbsp;{&nbsp;get; }&nbsp;&nbsp;&nbsp; object&nbsp;this[int index] {&nbsp;get;&nbsp;set; }}
随时随地看视频慕课网APP
我要回答