首页 新闻 会员 周边

IEnumerable和List有什么区别?

0
[已解决问题]

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

墙头草的主页 墙头草 | 初学一级 | 园豆:6
提问于:2010-01-26 15:31
< >
分享
最佳答案
4

如下

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 interface IEnumerable
{
     IEnumerator GetEnumerator();
}
public interface IEnumerator
{
    bool MoveNext();
    object Current { get; }
    void Reset();
}
public interface IList : ICollection, IEnumerable
{
    // Methods
    int Add(object value);
    void Clear();
    bool Contains(object value);
    int IndexOf(object value);
    void Insert(int index, object value);
    void Remove(object value);
    void RemoveAt(int index); // Properties
    bool IsFixedSize { get; }
    bool IsReadOnly { get; }
    object this[int index] { get; set; }
}

天天不在 | 小虾三级 |园豆:926 | 2010-01-26 16:04
其他回答(2)
0

List继承IEnumerable

一滴血 | 园豆:1602 (小虾三级) | 2010-01-26 15:34
我知道,那用法上有什么区别么,比如性能之类的
支持(0) 反对(0) 墙头草 | 园豆:6 (初学一级) | 2010-01-26 15:35
@墙头草:没有可比性;一个是类,一个是接口
支持(0) 反对(0) 一滴血 | 园豆:1602 (小虾三级) | 2010-01-27 11:32
1

手机和电池有什么区别···

【当耐特】 | 园豆:645 (小虾三级) | 2010-01-27 13:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册