0

0

c# list 用法大全

畫卷琴夢

畫卷琴夢

发布时间:2026-03-07 12:15:12

|

614人浏览过

|

来源于php中文网

原创

list默认capacity为0,首次add扩容至4;预估容量应直接指定以避免多次扩容;capacity≠count,clear不释放内存;insert非尾部性能差;foreach中不可remove,应用removeall或倒序for删除。

c# list 用法大全

声明和初始化:别让 Capacity = 0 拖慢第一次 Add

新建 List<t></t> 时,默认构造函数 new List<string>()</string>Capacity 是 0,**不是 16**(这是常见误解)。第一次 Add() 会触发内部数组扩容到容量 4,之后按需翻倍。如果预估要存几百个元素,直接指定初始容量能省下多次内存分配和复制开销:

List<string> logs = new List<string>(1024); // 避免前几次 Add 触发扩容
List<int> ids = new List<int> { 101, 102, 103 }; // 初始化器语法,简洁安全

⚠️ 注意:CapacityCount —— 前者是内部数组大小,后者才是当前真实元素数;Clear() 只清空 Count,不重置 Capacity,内存没释放。

Add、Insert、AddRange:中间插入代价高,优先用尾部追加

Add() 是 O(1) 均摊操作(扩容时为 O(n)),而 Insert(int index, T item) 在非末尾位置插入是 O(n),因为后续所有元素都要往前挪一位。高频场景如日志缓冲、队列推送,应避免在索引 0 或中间反复 Insert()

  • Add(item):追加到末尾,推荐用于大多数新增场景
  • Insert(0, item):等价于“头插”,性能差,考虑改用 Stack<t></t> 或反转逻辑
  • AddRange(collection):比循环调用 Add() 快得多 —— 内部一次校验容量 + 一次 Array.Copy,尤其适合从数组、其他集合批量导入

示例错误写法(低效):

foreach (var s in sourceArray) {
    list.Insert(0, s); // 每次都移动全部已有元素!
}

遍历与删除:千万别在 foreach 里调 Remove

foreach 本质调用 GetEnumerator(),底层维护一个版本号(_version)。只要列表被修改(AddRemoveClear 等),版本号就变,迭代器立刻抛出 InvalidOperationException: "Collection was modified..."

网奇.NET网络商城系统
网奇.NET网络商城系统

系统优势: 1、 使用全新ASP.Net+c#和三层结构开发. 2、 可生成各类静态页面(html,htm,shtm,shtml和.aspx) 3、 管理后台风格模板自由选择,界面精美 4、 风格模板每月更新多套,还可按需定制 5、 独具的缓存技术加快网页浏览速度 6、 智能销售统计,图表分析 7、 集成国内各大统计系统 8、 多国语言支持,内置简体繁体和英语 9、 UTF-8编码,可使用于全球

下载

正确做法分三类:

  • 删指定值 → 用 RemoveAll(predicate)(推荐):list.RemoveAll(x => x.StartsWith("Temp"));
  • 删指定索引范围 → 用 RemoveRange(index, count),先算好再删
  • 需要边遍历边判断 → 改用 for 倒序删(避免索引错位):for (int i = list.Count - 1; i >= 0; i--) if (needRemove(list[i])) list.RemoveAt(i);

性能敏感场景:装箱、LINQ.ToList() 和 TrimExcess 的取舍

值类型(如 intDateTime)存进 List<t></t> **完全不装箱**——这是它碾压 ArrayList 的核心优势。但若误用非泛型接口(比如把 List<int></int> 强转成 IList 再传参),可能意外触发装箱。

常见陷阱:

  • someList.Select(x => x * 2).ToList():每次调用都新建 List 并复制,大数据量慎用;可复用已有 List + Clear() + AddRange()
  • TrimExcess():把 Capacity 缩到等于 Count,省内存但触发一次数组复制 —— 只在明确后续不再增长且内存紧张时调用
  • 频繁 RemoveAt(0)Insert(0, ...):说明数据结构选错,换成 Queue<t></t>LinkedList<t></t> 更合适

真正影响性能的从来不是方法名有多长,而是你是否清楚每次调用背后在搬多少字节的内存。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

845

2023.08.22

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

203

2023.11.20

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

225

2025.12.04

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

950

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

605

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

294

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

212

2025.08.29

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

548

2023.12.01

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 10.8万人学习

C 教程
C 教程

共75课时 | 5.2万人学习

C++教程
C++教程

共115课时 | 20.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号