C#中IList与List的区别小结
在C#中,IList与List是两个常用的接口和类。他们有一些共性,也有一些细微的区别。
IList
IList接口定义了一个表示非泛型列表的对象的协定。它派生自ICollection接口并在其基础上添加了一些访问列表中元素的方法,如索引器和插入/删除等操作。IList支持在列表中插入、删除和访问元素的方法。他的定义如下:
public interface IList : ICollection, IEnumerable
{
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);
object this[int index] { get; set; }
}
List
List类是一个泛型类,继承自IList, ICollection和IEnumerable,它提供了一个动态数组的实现。List
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>,
IList, ICollection, IEnumerable
{
public List();
public List(int capacity);
public List(IEnumerable<T> collection);
public void Add(T item);
public void AddRange(IEnumerable<T> collection);
public int BinarySearch(T item);
public T Find(Predicate<T> match);
public List<T> FindAll(Predicate<T> match);
public int FindIndex(Predicate<T> match);
public bool Remove(T item);
public void RemoveAt(int index);
public void RemoveAll(Predicate<T> match);
}
区别小结
IList和List的主要区别是:
- IList可以被任何类型实现,而List只能包含同一类型的元素;
- IList定义了非泛型列表成员的接口,如Object的集合,而List是一个泛型列表;
- List是一个具体的类,IList只是一个接口;
- 如果不需要直接使用List.Add或List.RemoveAt等方法的话,IList是更佳的选择;
下面的示例代码是展示如何用IList和List分别实现一个简单的数字列表。
示例1 当List只能包含同一类型的元素时,IList也可以包含多种类型的元素
List<int> list1 = new List<int>();
list1.Add(1);
list1.Add(2);
list1.Add(3);
IList list2 = new List<object>();
list2.Add(1);
list2.Add("Hello World");
list2.Add(3.14);
foreach (var item in list2)
{
Console.WriteLine(item);
}
示例2 如何用IList和List分别实现一个简单的数字列表
IList<int> list1 = new List<int>();
list1.Add(1);
list1.Add(2);
list1.Add(3);
list1.Remove(2);
List<int> list2 = new List<int>();
list2.Add(1);
list2.Add(2);
list2.Add(3);
list2.Remove(2);
foreach (var item in list2)
{
Console.WriteLine(item);
}
以上就是关于C#中IList与List的区别小结的全部内容,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Ilist与list的区别小结 - Python技术站