C#中List集合的常用方法

2023-11-10

C#中List集合的常用方法

List类是ArrayList类的泛型等效类,该类使用大小可按需动态增加的数组实现IList泛型接口。

泛型的好处:它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。

性能注意事项:在决定使用IList还是使用ArrayList类(两者具有类似的功能)时,记住IList类在大多数情况下执行得更好并且是类型安全的。如果对IList类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T 使用值类型,则需要考虑实现和装箱问题。

常用方法和属性

常用属性

Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。

Count 属性,用于获取数组中当前元素数量

常用方法

  • 声明List:
  1. new List<T>()。其中T为列表中元素类型

    List<string> mList = new List<string>();
    
  2. new List<T> (IEnumerable<T> collection)。以一个集合作为参数创建List.

    string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };
    List<string> testList = new List<string>(temArr);
    
  • Add( ) 在List中添加一个对象的公有方法

    mList.Add("John");
    
  • AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素

    string[] temArr = { "Ha","Hunter", "Tom","Lily", "Jay","Jim", "Kuku",  "Locu"};
    mList.AddRange(temArr);
    
  • BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.

  • Clear( ) 在List内移除所有元素

  • Contains( ) 测试一个元素是否在List内

    if(mList.Contains("Hunter"))
      {
      		Console.WriteLine("There is Hunter in the list");
      }
      else
      {
    	  mList.Add("Hunter");
    	  Console.WriteLine("Add Hunter successfully.");
      }
    
  • CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内

  • Exists方法。检测一个元素是否在List内。
    具体方法定义为:public bool Exists(Predicate match);
    其中方法形参为Predicate match,Predicate为一个委托,表示定义一组条件并确定指定对象是否符合这些条件的方法。
    故而,Exists除了可以委托使用Lambda表达式,也可定义一个具体的方法作为委托。

    //Lambda表达式
    bool isExists = testList.Exists(t => t.Index == 7);
    
    //委托方法
    isExists = testList.Exists(JudgeExists);
    public bool JudgeExists()
    {
    	if(....)//当t.Index == 7存在时
    	{
    		return true;
    	}
    	return false;
    }
    
  • Find方法。查找并返回List内的出现的第一个匹配元素。

    var element = testList.Find(t => t.Name == "wangwei");
    
  • FindAll( ) 查找并返回List内的所有匹配元素

  • GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器

  • Getrange( ) 拷贝指定范围的元素到新的List内

  • IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引

  • Insert( ) 在List内插入一个元素

  • InsertRange( ) 在List内插入一组元素

  • LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引

  • Remove( ) 移除与指定元素匹配的第一个元素

  • RemoveAt( ) 移除指定索引的元素。移除后,后续索引元素会自动前移。

  • RemoveRange( ) 移除指定范围的元素

  • Reverse( ) 反转List内元素的顺序

  • Sort( ) 对List内的元素进行排序,按字母升序排序。

  • ToArray( ) 把List内的元素拷贝到一个新的数组内

  • trimToSize( ) 将容量设置为List中元素的实际数目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中List集合的常用方法 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • SVN 执行清理命令,提示清理以下路径失败,并可能有乱码的解决方法

    SVN 执行清理命令 提示清理以下路径失败 并可能有乱码的解决方法 参考文章 1 SVN 执行清理命令 提示清理以下路径失败 并可能有乱码的解决方法 2 https www cnblogs com aidegongyang p 830374
  • Windows下MySQL安装配置及libmysql的使用

    Windows下MySQL安装配置及libmysql的使用 1 安装配置 请参考 Mysql安装配置 2 API文档 libmysql API文档地址 3 示例代码 本示例代码使用了mysql stmt xxx接口 运行本代码需要提前创建好
  • Python之科赫曲线绘制

    实验四 py import turtle def koch size n if n 0 turtle fd size else for angle in 0 60 120 60 turtle left angle koch size 3 n
  • graphpad做图如何加星号_如何用R画分组柱状图并且添加标准差和显著性标记(星号)?...

    时间过了这么久 该交一份答案了 ggplot2包 是一个图形可视化包 并不带统计分析功能 所以统计学分析需要另外去做 这里加bar和显著性标识 如果了解ggplot2绘图原理中的图层概念的话 就能明白 无非就是在画完分组柱状图后 根据需要自
  • PCL 计算点云中任意一个点的法向量

    目录 一 算法原理 1 原理概述 2 主要函数 二 代码实现 三 结果展示 一 算法原理 1 原理概述 见 PCL 计算点云法向量并显示 2 主要函数 inline bool computePointNormal const pcl Poi
  • 自定义user表签发token、自定义认证类、simpleui模块使用

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 今日内容概要
  • mysql的数据备份脚本

    一 数据库的备份脚本脚本命令 1 核心命令 usr local mysql bin mysqldump h IP p3306 u dbuser p dbpasswd f A F E R quick single transaction fl
  • Linux命令 - ls命令

    Linux命令 ls命令 ls命令是linux下最常用的命令 ls命令就是list的缩写 用来打印出当前目录的清单 如果ls指定其他目录 那么就会显示指定目录里的文件及文件夹清单 通过ls 命令不仅可以查看linux文件夹包含的文件 而且可
  • python多线程:Thread类的用法

    我们要创建Thread对象 然后让他们运行 每个Thread对象代表一个线程 在每个线程中我们可以让程序处理不同的任务 这就是多线程编程 创建Thread对象有两种方法 1 直接创建Thread 将一个callable对象从类的构造器传递出
  • 团体程序设计天梯赛-练习集(5分题)

    团体程序设计天梯赛 练习集 5分题 L1 001 Hello World 5 分 这道超级简单的题目没有任何输入 你只需要在一行中输出著名短句 Hello World 就可以了 输入样例 无 输出样例 Hello World public
  • wav音频文件格式解析【个人笔记】(自用)

    目录 1 WAV格式 2 WAV的二进制格式解析 2 1 WAV文件格式 2 2 C语言解析wav文件 3 WAV文件语音数据的组织结构 4 总结 回到顶部 1 WAV格式 wav是微软开发的一种音频文件格式 注意 wav文件格式是无损音频
  • 编写测试用例案例

    案例一 电梯 功能 性能 界面 安全 易用 功能 点击按钮电梯门是否能正常打开和关闭 电梯开关门按钮是否能正常使用 电梯里面是否有紧急按钮 点击相对的楼层按钮电梯是否能顺利到达对应楼层 电梯是否有超重提醒 电梯是否能做人 电梯除了做人还有其
  • css 灯泡发光动画,挺有意思

    light animation flicker 4000ms ease infinite keyframes flicker 0 100 box shadow 0 0 1rem fefa01 inset 0 25rem 0 0 0 5rem
  • volatile的使用条件

    volatile的使用条件 Volatile 变量具有 synchronized 的可见性特性 但是不具备原子性 这就是说线程能够自动发现 volatile 变量的最新值 Volatile 变量可用于提供线程安全 但是只能应用于非常有限的一
  • 服务器uefi装系统教程,uefi模式怎么重装系统_win10uefi装系统步骤教程

    2019 01 13 10 15 56 浏览量 11984 uefi模式重装系统步骤是怎样的 新电脑已经进入uefi时代 任何一款新电脑都是uefi主板 默认的系统是win10 64位纯净版 如果要重装系统 需要在uefi模式下重装 对应的
  • 深度解析:从0到1搭建电商营销中心(建议收藏)

    看完本文 你将对以下问题有所了解 1 什么是促销 2 促销的作用是什么 3 营销中心有哪些核心能力 4 营销中心从0到1如何设计 4 1 促销工具 4 2 促销叠加互斥规则 4 3 促销命中规则 4 4 实时价格计算 4 5 优惠分摊计算
  • 根据不同的登录用户获取对应的数据

    一 我的开发环境 springBoot mybatisplus security 二 难点 如何获取登录的用户名 三 我的分析思路 1 先在登录接口找到是否有获取用户信息的方法 没有的话就往service层找 那我这里在controller
  • 【计算机网络】图解应用层协议

    图解应用层协议 1 应用层 2 远程登录 2 1 Telnet 2 2 SSH 3 文件传输 3 1 FTP 3 2 TFTP 4 电子邮件 4 1 通信架构 4 2 邮件地址 4 3 SMTP 协议 4 4 POP3 协议 4 5 IMA
  • 疯壳出品鸿蒙os-驱动程序接收应用程序的消息

    当明确驱动已经加载完成时 用户态应用可通过接口 struct HdfIoService HdfIoServiceBind const char serviceName mode t permission 获取驱动的服务 获取到服务后通过服务
  • C#中List集合的常用方法

    C 中List集合的常用方法 常用方法和属性 常用属性 常用方法 List类是ArrayList类的泛型等效类 该类使用大小可按需动态增加的数组实现IList泛型接口 泛型的好处 它为使用c 语言编写面向对象程序增加了极大的效力和灵活性 不