C#中Ilist与list的区别小结

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只能存储T类型的数据。List提供了多个构造函数和便捷方法,如Add,Contains和Remove等方法。List使用“数组方式”来存储其元素,因此它可以像一个数组一样按下标访问。一般来说,通常情况下List是比IList更实用的。

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技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 什么是JWT超详细讲解

    以下是关于“什么是JWT超详细讲解”的完整攻略: 1. 什么是JWT? JWT(JSON Web Token)是一种用于身份验证开放标准(RFC 7519),它定义了一种紧凑且包含的方式,用于在各方之间安全地传输信息。JWT通常用于Web应用程序中,以验证用户的身份并提供访问控制。 2. JWT的结构 JWT由三部分组成,它们用点号(.)分隔开来: head…

    C# 2023年5月12日
    00
  • 详解C#对Dictionary内容的通用操作

    下面是详解C#对Dictionary内容的通用操作的完整攻略: 1.概述 C#中的Dictionary类允许开发者使用键值对的方式来存储和访问数据,是C#中常用的一种集合类型。开发者可以通过Dictionary类提供的通用操作来对字典的内容进行添加、修改、删除和访问等操作。下面我们将详细说明C#中Dictionary类的通用操作。 2. 通用操作 2.1 添…

    C# 2023年6月1日
    00
  • aspx 页面弹出窗口代码大全

    下面是详细的攻略: ASPX 页面弹出窗口代码大全 在 ASPX 页面中,弹出窗口是实现一些交互和提示的重要手段。下面是常用的弹出窗口代码集合。 alert 弹出窗口 alert 可以在页面上弹出一个提示信息窗口,用法如下: alert(‘Hello, World!’); 其中,’Hello, World!’ 是想要显示在弹出窗口中的提示信息。 confir…

    C# 2023年5月31日
    00
  • 微信公众平台开发教程(三) 基础框架搭建

    下面将为你详细讲解“微信公众平台开发教程(三) 基础框架搭建”的完整攻略。 1. 前言 在此之前,需要在微信公众平台官网上申请并获取到公众号的开发者权限。本文以PHP为例。 2. 搭建基础框架 在开始之前需要安装或确保已经安装Composer,Composer是PHP的依赖管理工具,它允许开发者定义所依赖的库,然后Composer会自动解决他们的依赖性,并安…

    C# 2023年6月3日
    00
  • Silverlight中同步调用WebClient的解决办法,是同步!

    在Silverlight中,WebClient是一个常用的类,用于从Web服务器下载数据。默认情况下,WebClient使用异步方式下载数据,这意味着下载操作将在后台线程中执行,而不会阻塞UI线程。但是,在某些情况下,我们可能需要使用同步方式下载数据,以便在下载完成之前阻塞UI线程。本文将介绍如何在Silverlight中同步调用WebClient,并提供两…

    C# 2023年5月15日
    00
  • 浅谈C#设计模式之开放封闭原则

    浅谈C#设计模式之开放封闭原则 开放封闭原则(Open Closed Principle,OCP)是设计模式中非常重要的一条原则,它强调软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。换句话说,当需求发生变化时,我们应该添加新的代码而不是修改已有的代码。这样能够保证系统的稳定性和可扩展性。 开放封闭原则的核心思想 开放封闭原则的核心思想可归纳为两个方…

    C# 2023年5月15日
    00
  • c#的sortedlist使用方法

    C# SortedList使用方法 简介 C#中的SortedList是一种有序的泛型集合,它根据键的范围对键值对进行排序,且支持快速查找。深入了解SortedList的使用方法,可以帮助我们更好地处理数据集合。 创建SortedList实例 在使用SortedList前,我们需要创建一个SortedList的实例。创建实例的方式如下: SortedList…

    C# 2023年5月31日
    00
  • asp中用insert into语句向数据库插入记录(添加信息)的方法

    以下是详细讲解“asp中用insert into语句向数据库插入记录(添加信息)的方法”的完整攻略: 1. 连接数据库 在使用insert into语句插入记录之前,我们需要首先连接到数据库,使用ADODB.Connection对象可以实现数据库连接。连接数据库的代码如下: <% ‘Recordset对象用于存储和处理从数据库中检索出来的数据 Dim …

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部