C# List<T>的Contains、Exists、Any、Where性能对比

1、Contains方法

Contains方法的作用是检查List中是否包含指定元素,其代码实现如下

List<string> list = new List<string>() { "a", "b", "c", "d" };

bool isExists = list.Contains("a");

Contains方法的执行时间非常短,一般在1毫秒以下。因为该方法使用了二分查找算法,在大多数情况下,找到指定元素只需要遍历集合的一半即可,所以执行速度非常快。

2、Exists方法

Exists方法是一个实例方法,可以使用委托作为它的参数来查找元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };

bool isExists = list.Exists(x => x == "a");

由于Exists方法的参数是一个委托,所以其执行时间比Contains方法要长。但是,当集合中元素比较多且查找条件复杂时,Exists方法的执行时间可能比Contains方法更短。

3、Any方法

Any方法用于判断集合中是否存在满足指定条件的元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };

bool isExists = list.Any(x => x == "a");

Any方法的执行时间与Exists方法相当,因为它们两个的代码实现方式都是一样的。

4、Where方法

Where方法用于筛选符合指定条件的元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };

var result = list.Where(x => x == "a");

Where方法的返回值是一个IEnumerable,因为它只是筛选符合指定条件的元素,而并没有直接返回元素本身。由于Where方法是延迟求值的,所以需要使用foreach等方式来获取其返回值。

由于Where方法返回的是延迟求值的IEnumerable,其执行时间比其他方法要长一些。但是,如果需要对集合进行复杂的筛选操作时,Where方法是一个非常好用的API。

相关推荐
Hello_Pyhx6 小时前
WinDirStat 2.9.3:从目录扫描到可复查的占用报表
windows·mac·垃圾清理
samble6 小时前
从零搭建灌装监控系统(十八):自定义控件,三色灯与状态指示
c#·wpf·mvvm·modbus·工业控制
jun_bai7 小时前
使用Aspose实现word文档合并,内容替换
windows·c#·word
mklpo1478 小时前
为不支持sse4.2命令集的老旧设备制作Win11 26H2系统镜像,2026-10-11。
运维·windows·python
Vex2une9 小时前
PowerShell 发展史:从命令行外壳到跨平台自动化引擎
windows·自动化·azure·powershell·vs code·脚本语言·dsc
富洋金锐10 小时前
windows-winmtr与pathping命令-网络丢包排查
网络·windows
xuxigifxfh10 小时前
牛客:BISHI2 【模板】栈的操作
java·开发语言·windows·算法
字节暗面10 小时前
客户端上报不可信:游戏服务端数据校验与对局重演设计
c#·游戏开发·服务端校验·反作弊
chingho11 小时前
GitHub上这10个C#项目,不仅实用,还怪好玩的
c#·github·.net·开源项目
半亩码田13 小时前
C#转Python第5.1篇:异步编程:asyncio vs async/await,语法相似但机制不同
开发语言·python·c#