C# 泛型集合实战:List<T>与Dictionary<TKey, TValue>的使用与优势

C# 中的泛型集合提供了类型安全和性能优势,是现代C#编程中不可或缺的一部分。List<T>Dictionary<TKey, TValue> 是最常用的两个泛型集合类型,分别用于存储元素的列表和键值对的集合。

List

List<T> 是一个可变大小的数组,可以存储任意类型的对象,但一旦声明了List<T>的类型参数T,该列表就只能存储该类型的对象了。List<T>提供了丰富的成员函数来管理集合,如添加、删除、查找元素等。

示例:使用List
csharp 复制代码
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> myList = new List<int>();

        // 添加元素
        myList.Add(1);
        myList.Add(2);
        myList.AddRange(new int[] { 3, 4, 5 });

        // 访问元素
        Console.WriteLine(myList[0]); // 索引访问

        // 遍历List
        foreach (int item in myList)
        {
            Console.WriteLine(item);
        }

        // 使用Linq查询
        var evenNumbers = myList.FindAll(x => x % 2 == 0);
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);
        }
    }
}

Dictionary<TKey, TValue>

Dictionary<TKey, TValue> 是一个存储键值对的集合,其中每个键都是唯一的,并且每个键都映射到一个值。Dictionary<TKey, TValue> 提供了快速查找、插入和删除键值对的能力。

示例:使用Dictionary<TKey, TValue>
csharp 复制代码
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, int> myDict = new Dictionary<string, int>();

        // 添加键值对
        myDict.Add("Apple", 100);
        myDict["Banana"] = 200;

        // 访问元素
        Console.WriteLine($"The count of Apples is {myDict["Apple"]}.");

        // 遍历Dictionary
        foreach (KeyValuePair<string, int> kvp in myDict)
        {
            Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}");
        }

        // 使用Linq查询
        var filteredDict = myDict.Where(kvp => kvp.Value > 100);
        foreach (var item in filteredDict)
        {
            Console.WriteLine($"Key = {item.Key}, Value = {item.Value}");
        }
    }
}

注意事项

  • 当使用泛型集合时,不需要在添加或检索元素时进行类型转换,因为集合已经知道了它可以存储的元素的类型。
  • 泛型集合比非泛型集合(如ArrayListHashtable)提供了更好的性能,因为避免了装箱(boxing)和拆箱(unboxing)操作,并允许更精确的内存分配。
  • 泛型集合也提供了更好的类型安全性,因为编译器可以在编译时检查类型错误。
  • 在选择使用List<T>还是Dictionary<TKey, TValue>时,主要取决于我们的具体需求。如果需要存储一个元素列表并且经常需要按索引访问这些元素,那么List<T>是更好的选择。如果需要存储键值对并经常需要通过键来检索值,那么Dictionary<TKey, TValue>是更合适的选择。
相关推荐
java之迷1 小时前
Windows环境下,源码启动+本地部署和启动开源项目Ragflow失败SRE模块
windows·docker·开源
摩羯座-185690305943 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
懒人Ethan10 小时前
解决一个C# 在Framework 4.5反序列化的问题
java·前端·c#
zym大哥大10 小时前
高并发内存池
服务器·数据库·windows
mysolisoft11 小时前
Avalonia+ReactiveUI实现记录自动更新
c#·avalonia·reactiveui·sourcegenerator
心疼你的一切12 小时前
使用Unity引擎开发Rokid主机应用的模型交互操作
游戏·ui·unity·c#·游戏引擎·交互
韩立学长13 小时前
【开题答辩实录分享】以《C#大型超市商品上架调配管理系统的设计与实现》为例进行答辩实录分享
开发语言·c#
铁手飞鹰13 小时前
VS2022创建项目工程笔记
c++·windows·笔记·visualstudio
私人珍藏库14 小时前
笔墨星河 - AI长篇小说生成软件
windows·ai·工具
charlie11451419114 小时前
Windows 10 系统编程——线程专题1
c++·windows·学习·线程