1 回答

TA貢獻1844條經驗 獲得超8個贊
如下
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; }
}
- 1 回答
- 0 關注
- 1062 瀏覽
添加回答
舉報