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日

相关文章

  • C#调用QQ_Mail发送邮件实例代码两例

    关于C#调用QQ_Mail发送邮件实例代码,以下是完整攻略。 1. 准备工作 在使用C#编写代码发送QQ_Mail邮件前,你需要完成以下准备工作: 获取SMTP服务器地址和端口号,可以在QQ邮箱的设置中找到。 获得登录QQ邮箱时使用的邮箱地址和密码。 2. 示例1:使用System.Net.Mail.SmtpClient发送邮件 使用System.Net.M…

    C# 2023年5月15日
    00
  • 使用 HttpReports 监控 .NET Core 应用程序的方法

    当我们在开发 .NET Core 应用程序时,特别是在部署到生产环境后,我们需要对应用程序的运行时状态和表现进行监控。这种监控对于保持应用程序的稳定和高效运行至关重要。在这种情况下,使用 HttpReports 是一个好的选择。 以下是使用 HttpReports 监控 .NET Core 应用程序的方法和步骤: 一、安装 HttpReports 安装 Ht…

    C# 2023年6月3日
    00
  • win7中iis7.5中没有http绑定类型的解决方法

    win7中iis7.5中没有http绑定类型的解决方法 在Windows 7中,IIS 7.5是一种常用的Web服务器,用于托管和管理Web应用程序。有时,我们可能会遇到“没有HTTP绑定类型”的问题,这可能会导致Web应用程序无法正常运行。本文将提供详细的“win7中iis7.5中没有http绑定类型的解决方法”的完整攻略,包括如何添加HTTP绑定类型、如…

    C# 2023年5月15日
    00
  • C#基础语法:方法参数详解

    C#基础语法:方法参数详解 在 C# 中,方法的参数是指方法接收的数据类型和变量,它是方法的重要组成部分。方法参数允许我们向方法传递值,并在方法中使用这些值。本文将详细讲解 C# 中的方法参数及其使用方法。 方法参数的基本概念 示例方法定义如下所示: public int Add(int num1, int num2) { return num1 + num…

    C# 2023年5月15日
    00
  • C#设计模式之观察者模式实例讲解

    C#设计模式之观察者模式实例讲解 概念介绍 观察者模式(Observer Pattern)是软件设计模式之一,它定义了对象之间的一种一对多的依赖关系,让多个观察者(Observers)对象同时监听某一个主题(Subject)对象。当这个主题对象的状态发生变化时,会通知所有观察者对象,使它们能够自动更新。 观察者模式中有两个重要的部分:Subject 主题和 …

    C# 2023年5月31日
    00
  • 生成代码从T到T1、T2、Tn自动生成多个类型的泛型实例代码

    生成代码从 T 到 T1、T2、Tn 可以采用泛型实现,这要求在代码的编写中加入范型的参数和返回类型,并在程序运行时通过传入的不同类型参数自动生成多个类型的泛型实例代码。 具体实现步骤如下: 在代码中声明一个泛型方法,该方法中使用泛型参数 T 作为数据类型的占位符,以代表传入参数的类型。示例代码如下: public static <T> void…

    C# 2023年6月6日
    00
  • C#自定义事件监听实现方法

    下面我将详细讲解“C#自定义事件监听实现方法”的完整攻略。 一、什么是自定义事件 在C#中,自定义事件是指开发者可以自主定义事件,而不是使用已经定义好的事件。使用自定义事件可以让代码更灵活,同时也可以让代码更易于维护。 二、自定义事件的实现方法 1. 声明事件委托 在声明自定义事件之前,需要先声明事件委托。事件委托是一种特殊的委托类型,用于封装一个或多个接受…

    C# 2023年6月1日
    00
  • C#语法相比其它语言比较独特的地方(三)

    下面来详细讲解“C#语法相比其它语言比较独特的地方(三)”。 1. Lambda表达式 Lambda表达式是C#语法中相比其它语言比较独特的地方之一。Lambda表达式是一种匿名函数,可以使用简短、清晰的语法编写。它主要用于简化代码,使代码更加易读。以下是一个简单的Lambda表达式的示例: // 普通方式定义函数 delegate int Calculat…

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