LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 中 List<T> 一种泛型集合列表使用指引

admin
2025年3月27日 0:34 本文热度 183

概念和特点

在 C# 中,List<T> 是一种泛型集合,它提供了一组强大的方法来管理一组有序的对象。列表的特点包括:

  • 动态大小
    :与数组不同,列表的大小会根据需要动态增长或缩小。
  • 同类型元素
    :列表中只能包含一种类型的元素,这个类型在声明时通过泛型参数 T 指定。
  • 随机访问
    :列表支持通过索引快速访问元素。
  • 灵活的操作
    :列表提供了丰富的方法,如添加、删除、查找、排序等。

应用场景

  • 数据集合管理
    :当你需要一个可以动态调整大小的数据集合时,列表是一个理想的选择。
  • 数据库查询结果
    :数据库查询通常返回可变大小的数据集,列表可以方便地存储这些结果。
  • UI元素管理
    :在用户界面编程中,列表可以用来管理动态的控件集合,如下拉菜单项。

方法与属性

常用方法

  • Add(T item)
    :在列表的末尾添加一个元素。
  • AddRange(IEnumerable collection)
    :添加一个元素集合到列表的末尾。
  • Remove(T item)
    :移除列表中第一个匹配的元素。
  • RemoveAt(int index)
    :移除指定索引处的元素。
  • Clear()
    :移除列表中所有的元素。
  • Contains(T item)
    :判断元素是否在列表中。
  • IndexOf(T item)
    :查找元素在列表中第一次出现的位置。
  • Sort()
    :对列表中的元素进行排序。
  • Reverse()
    :反转列表中的元素顺序。
  • Find(Predicate match)
    :查找符合条件的第一个元素。
  • FindAll(Predicate match)
    :查找符合条件的所有元素。
  • ToArray()
    :将列表转换为数组。
  • Insert(int index, T item)
    :在指定位置插入一个元素。
  • CopyTo(T[] array, int arrayIndex)
    :将列表中的元素复制到数组中。

常用属性

  • Count
    :获取列表中的元素个数。
  • Capacity
    :获取或设置列表可以存储的元素总数。
  • Item[int index]
    (索引器):获取或设置指定索引处的元素。

示例

基本操作示例

// 创建一个整数列表
List<int> numbers = new List<int>();

// 添加元素
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);

// 移除元素
numbers.Remove(2);

// 遍历列表
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

// 输出元素个数
Console.WriteLine("Count: " + numbers.Count);

列表初始化和范围添加

// 使用集合初始化器初始化列表
List<string> fruits = new List<string> { "Apple""Banana""Cherry" };

// 添加另一个列表的元素
List<string> moreFruits = new List<string> { "Date""Elderberry" };
fruits.AddRange(moreFruits);

// 输出所有水果
fruits.ForEach(fruit => Console.WriteLine(fruit));

查找和排序

// 创建并初始化一个整数列表
List<int> scores = new List<int> { 90858075100 };

// 查找分数大于等于85的所有成绩
List<int> highScores = scores.FindAll(score => score >= 85);

// 输出高分
highScores.ForEach(score => Console.WriteLine("High score: " + score));

// 排序列表
scores.Sort();

// 输出排序后的成绩
scores.ForEach(score => Console.WriteLine("Score: " + score));

使用LINQ与列表

查找和搜索

List<int> numbers = new List<int> { 1357935 };

// 检查元素是否存在
bool hasThree = numbers.Contains(3); // true
Console.WriteLine(hasThree);

// 查找元素索引
int firstIndex = numbers.IndexOf(5); // 2
Console.WriteLine(firstIndex);
int lastIndex = numbers.LastIndexOf(5); // 6
Console.WriteLine(lastIndex);

// 使用谓词查找元素
int firstGreaterThanFour = numbers.Find(x => x > 4); // 5
Console.WriteLine(firstGreaterThanFour);
List<int> allGreaterThanFour = numbers.FindAll(x => x > 4); // [5, 7, 9, 5]
Console.WriteLine(allGreaterThanFour);

排序和反转

List<string> names = new List<string> { "Zack""Alice""Bob""Charlie" };

// 排序
names.Sort(); // ["Alice", "Bob", "Charlie", "Zack"]
Console.WriteLine(string.Join(", ", names));

// 反转
names.Reverse(); // ["Zack", "Charlie", "Bob", "Alice"]
Console.WriteLine(string.Join(", ", names));

// 自定义排序
names.Sort((a, b) => b.CompareTo(a)); // 降序排序
Console.WriteLine(string.Join(", ", names));

LINQ操作

List<int> numbers = new List<int> { 12345678910 };

// 筛选
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("偶数:");
foreach (var number in evenNumbers)
{
    Console.WriteLine(number);
}

// 转换
var squared = numbers.Select(n => n * n).ToList();
Console.WriteLine("平方:");
foreach (var number in squared)
{
    Console.WriteLine(number);
}

// 聚合
var sum = numbers.Sum();
var average = numbers.Average();
var max = numbers.Max();
Console.WriteLine($"总和:{sum}");
Console.WriteLine($"平均值:{average}");
Console.WriteLine($"最大值:{max}");


实际应用示例

学生成绩管理

namespace AppList
{
    publicclass Student
    {

        publicstring Name { get; set; }
        publicint Score { get; set; }
    }
    internal class Program
    {

        static void Main(string[] args)
        
{
            // 创建学生列表
            List<Student> students = new List<Student>
            {
                new Student { Name = "Alice", Score = 95 },
                new Student { Name = "Bob", Score = 85 },
                new Student { Name = "Charlie", Score = 90 }
            };

            // 查找成绩最高的学生
            var topStudent = students.OrderByDescending(s => s.Score).First();

            // 计算平均分
            var averageScore = students.Average(s => s.Score);

            // 找出及格的学生
            var passedStudents = students.FindAll(s => s.Score >= 60);

            Console.WriteLine($"最高分学生:{topStudent.Name},成绩:{topStudent.Score}");
            Console.WriteLine($"平均分:{averageScore}");
            Console.WriteLine("及格学生:");
            foreach (var student in passedStudents)
            {
                Console.WriteLine($"{student.Name},成绩:{student.Score}");
            }
        }
    }
}

购物车实现

namespace AppList
{
    publicclass CartItem
    {

        publicstring ProductName { get; set; }
        public decimal Price { get; set; }
        publicint Quantity { get; set; }
    }
    internal class Program
    {

        static void Main(string[] args)
        
{
            List<CartItem> cart = new List<CartItem>();

            // 添加商品到购物车
            cart.Add(new CartItem
            {
                ProductName = "iPhone",
                Price = 999.99m,
                Quantity = 1
            });

            // 计算总价
            decimal total = cart.Sum(item => item.Price * item.Quantity);

            // 查找特定商品
            var phone = cart.Find(item => item.ProductName.Contains("iPhone"));

            Console.WriteLine($"Total: {total}");
            Console.WriteLine($"Phone: {phone?.ProductName}");
        }
    }
}

性能考虑

  • 当频繁在列表开头插入或删除元素时,考虑使用LinkedList
  • 预知列表大小时,通过构造函数指定初始容量可以提高性能
  • 大量随机访问操作时,List比其他集合类型更高效
  • 需要唯一元素时,考虑使用HashSet

总结

List是C#中最常用的集合类型之一,它提供了强大的功能和灵活的操作方式。通过合理使用其提供的方法,可以高效地管理和操作数据。在实际开发中,根据具体需求选择合适的操作方法,可以显著提高代码的效率和可维护性。

这篇文章涵盖了List的主要特性和用法,包含了丰富的示例代码和实际应用场景。每个示例都附带了详细的注释,便于理解。


阅读原文:原文链接


该文章在 2025/3/27 13:27:21 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved