位置: 文档库 > C#(.NET) > 文档下载预览

《C#中list的用法实例.doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

C#中list的用法实例.doc

《C#中List的用法实例》

在C#编程中,List是.NET Framework提供的动态数组集合类,属于System.Collections.Generic命名空间。相比传统数组,List具有动态扩容、类型安全、提供丰富方法等优势,是处理有序数据集合的首选工具。本文将通过完整实例详细讲解List的创建、增删改查、排序、转换等核心操作,帮助开发者高效掌握其用法。

一、List的基础操作

1.1 创建List实例

使用泛型语法创建List时需指定元素类型,以下是三种常见初始化方式:

// 方式1:空列表初始化
List names1 = new List();

// 方式2:指定初始容量(提高性能)
List numbers = new List(10);

// 方式3:使用集合初始化器
List prices = new List { 19.99, 29.99, 39.99 };

1.2 添加元素

Add方法向列表末尾添加单个元素,AddRange可批量添加集合:

List fruits = new List();
fruits.Add("Apple");
fruits.AddRange(new[] { "Banana", "Orange" });

// 输出结果:Apple, Banana, Orange
Console.WriteLine(string.Join(", ", fruits));

1.3 访问元素

通过索引器访问元素时需注意边界检查,Insert方法可在指定位置插入元素:

List letters = new List { 'A', 'B', 'D' };
letters.Insert(2, 'C');  // 在索引2处插入

// 输出:A B C D
for (int i = 0; i 

二、搜索与修改操作

2.1 查找元素

Contains方法检查元素是否存在,IndexOf返回首次出现的位置:

List scores = new List { 85, 90, 75, 90 };
bool has90 = scores.Contains(90);  // true
int first90Index = scores.IndexOf(90);  // 1

// 使用Exists进行复杂条件查找
bool hasHighScore = scores.Exists(s => s > 85);

2.2 修改元素

通过索引直接修改,或使用ConvertAll进行整体转换:

List codes = new List { "A01", "B02", "C03" };
codes[1] = "B99";  // 修改索引1的元素

// 将所有元素转为大写
List upperCodes = codes.ConvertAll(c => c.ToUpper());

2.3 删除元素

提供多种删除方式,需注意性能差异:

List ids = new List { 101, 102, 103, 102 };

// 按值删除(首次出现)
ids.Remove(102);  

// 按索引删除
ids.RemoveAt(0);  

// 删除所有匹配项
ids.RemoveAll(id => id == 102);  

// 清空列表
ids.Clear();

三、排序与比较操作

3.1 基本排序

Sort方法默认按升序排列,Reverse实现逆序:

List ages = new List { 25, 18, 30, 22 };
ages.Sort();  // 18, 22, 25, 30
ages.Reverse();  // 30, 25, 22, 18

3.2 自定义排序

通过Comparison委托或IComparer接口实现复杂排序:

List names = new List { "Tom", "Alice", "Bob" };

// 按字符串长度排序
names.Sort((x, y) => x.Length.CompareTo(y.Length));

// 使用自定义比较器
public class LengthComparer : IComparer
{
    public int Compare(string x, string y) => y.Length.CompareTo(x.Length);
}
names.Sort(new LengthComparer());  // 降序排列

四、高级操作实例

4.1 列表转换

使用ToArray和ToList实现集合转换:

string[] nameArray = new[] { "John", "Mary" };
List nameList = nameArray.ToList();

List numList = new List { 1, 2, 3 };
int[] numArray = numList.ToArray();

4.2 范围操作

GetRange获取子列表,AsReadOnly创建只读视图:

List colors = new List { "Red", "Green", "Blue", "Yellow" };

// 获取索引1-2的元素
List subColors = colors.GetRange(1, 2);  

// 创建只读列表
IList readOnly = colors.AsReadOnly();

4.3 查找极值

结合LINQ查询最大最小值:

List temperatures = new List { 23.5, 25.1, 22.8, 24.3 };

double maxTemp = temperatures.Max();
double minTemp = temperatures.Min();
double avgTemp = temperatures.Average();

五、性能优化技巧

5.1 容量管理

预先设置Capacity避免多次扩容:

List buffer = new List(1024);  // 初始容量1024
for (int i = 0; i 

5.2 批量操作

使用AddRange比多次Add更高效:

// 低效方式
List slowList = new List();
for (int i = 0; i  fastList = new List(1000);
string[] temp = new string[1000];
for (int i = 0; i 

5.3 结构体列表优化

对于值类型集合,考虑使用结构体减少堆分配:

public struct Point { public int X; public int Y; }

List points = new List(1000);
for (int i = 0; i 

六、实际应用案例

6.1 用户数据管理

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

List users = new List
{
    new User { Id = 1, Name = "Alice" },
    new User { Id = 2, Name = "Bob" }
};

// 添加新用户
users.Add(new User { Id = 3, Name = "Charlie" });

// 按ID查找用户
User found = users.FirstOrDefault(u => u.Id == 2);

// 删除ID为1的用户
users.RemoveAll(u => u.Id == 1);

6.2 成绩统计系统

List grades = new List { 88.5, 92.0, 76.5, 85.0 };

// 计算平均分
double average = grades.Average();

// 统计及格率
int passCount = grades.Count(g => g >= 60);
double passRate = (double)passCount / grades.Count * 100;

// 成绩分级
var gradeStats = grades.GroupBy(g => 
    g >= 90 ? "A" : 
    g >= 80 ? "B" : 
    g >= 70 ? "C" : 
    g >= 60 ? "D" : "F")
    .ToDictionary(g => g.Key, g => g.Count());

七、常见问题解决方案

7.1 线程安全问题

多线程环境下需使用同步机制:

List sharedList = new List();
object lockObj = new object();

// 线程安全添加
lock (lockObj)
{
    sharedList.Add(1);
}

// 或使用并发集合
ConcurrentBag concurrentBag = new ConcurrentBag();
concurrentBag.Add(1);

7.2 内存管理

处理大数据量时注意及时释放资源:

// 大数据处理示例
List largeData = new List(10000);
try
{
    // 填充数据...
}
finally
{
    // 显式清空引用
    largeData.Clear();
    // 提示GC回收
    GC.Collect();
}

7.3 性能对比

不同操作的时间复杂度:

// 索引访问:O(1)
int item = list[0];

// 线性搜索:O(n)
bool exists = list.Contains(item);

// 排序:O(n log n)
list.Sort();

// 添加到末尾:平均O(1),最坏O(n)

关键词:C#、List、动态数组、泛型集合、元素操作、排序算法、性能优化、线程安全、LINQ查询、集合转换

简介:本文系统讲解C#中List集合类的使用方法,涵盖基础操作、搜索修改、排序比较、高级转换、性能优化及实际应用案例。通过大量代码实例演示动态数组的创建、增删改查、自定义排序、线程安全处理等核心功能,适合需要掌握.NET集合框架的开发者参考。

《C#中list的用法实例.doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档