当前位置: 首页 > news >正文

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

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

List

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

示例:使用List
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]); // 索引访问// 遍历Listforeach (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>
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"]}.");// 遍历Dictionaryforeach (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>是更合适的选择。

http://www.mrgr.cn/news/44375.html

相关文章:

  • 给Linux操作系统命令取个别名
  • 【含文档】基于Springboot+Android的房屋租赁App(含源码+数据库+lw)
  • 数据采集工具sqoop介绍
  • 高级java每日一道面试题-2024年10月6日-数据库篇-MVCC是什么? 它的底层原理是什么?
  • 设计模式的学习
  • Trie树之最大异或对问题
  • C语言 | Leetcode C语言题解之第461题汉明距离
  • VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布
  • 【Canvas与色彩】十二等分多彩隔断圆环
  • 单链表的分解
  • 【QT】QT入门
  • 前沿论文创新点集合
  • 输电线路悬垂线夹检测无人机航拍图像数据集,总共1600左右图片,悬垂线夹识别,标注为voc格式
  • 通用版本升级规范
  • 微软推出针对个人的 “AI伴侣” Copilot 会根据用户的行为模式、习惯自动进化
  • 二叉树的进阶
  • 五、存储引擎
  • 详细分析Spring Framework中 @ConditionalOnProperty的基本知识(附Demo)
  • SpringBoot:让开发更加简单
  • 数字电表读数检测图像数据集,数据集总共3300左右张图片,标注为voc格式