.NET面试|泛型集合类

System.Collections.Generic 是 .NET Core(以及 .NET Framework)中的一个基础命名空间,它提供了一系列泛型集合类(Generic Collections)。

通俗解释

你可以把它想象成一个“工具箱”,里面装着各种高效、类型安全的容器(比如列表、字典、队列等),专门用来存储和管理数据。

为什么用泛型集合?

在早期的 .NET 版本中,集合类(如 ArrayList)存储的是 object 类型,这意味着:

类型不安全:你可以往 ArrayList 里塞任何东西(比如数字、字符串混在一起),取出来时还要强制转换,容易出错。

性能较差:因为每次存取都要进行类型转换,影响运行速度。

而 泛型集合 解决了这些问题:

类型安全:声明一个 List,就只能存整数,放其他类型会直接报错。

性能更高:不需要类型转换,运行更快。

常用的泛型集合类

List

动态数组(可增删改查)

List names = new List { "张三", "李四" }; 

Dictionary

键值对存储(快速查找)

Dictionary idToName = new Dictionary { {1, "张三"}, {2, "李四"} }; 

Queue

先进先出(FIFO)队列

Queue queue = new Queue(); queue.Enqueue(1); queue.Dequeue(); 

Stack

后进先出(LIFO)栈

Stack stack = new Stack(); stack.Push("A"); stack.Pop(); 

HashSet

无重复元素的集合

HashSet numbers = new HashSet { 1, 2, 3 }; 

 

实际项目中的应用

1. List(动态数组)

场景:存储一组数据,比如用户列表、商品清单。

List invoices = new List();

invoices.Add(new Invoice { Id = 1, Amount = 100 });

foreach (var invoice in invoices)

{

Console.WriteLine($"发票ID: {invoice.Id}, 金额: {invoice.Amount}");

}

2. Dictionary(键值对)

场景:快速查找数据,比如用ID查用户信息。

Dictionary taxRates = new Dictionary

{

{1, "6%"}, {2, "9%"}, {3, "13%"}

};

string rate = taxRates[1]; // 直接获取税率

3. Queue(队列)

场景:任务调度,比如按顺序处理发票。

Queue processingQueue = new Queue();

processingQueue.Enqueue(invoice1);

processingQueue.Enqueue(invoice2);

while (processingQueue.Count > 0)

{

var currentInvoice = processingQueue.Dequeue();

ProcessInvoice(currentInvoice); // 处理发票

}

对比非泛型集合(旧方式)

1. 存储类型 

ArrayList 只能存 object,可能混入不同类型

List 只能存指定类型(如 int、string) 

2. 类型安全

ArrayList 不安全(需要强制转换)❌

List 安全(编译器检查)✅

3. 性能

ArrayList 较慢(频繁类型转换)⚠️

List 更快(直接操作数据) ✅

 

例子(非泛型 vs 泛型):

// 非泛型(容易出错)

ArrayList list = new ArrayList();

list.Add(1);

list.Add("Hello"); // 可以混入不同类型

int num = (int)list[0]; // 需要强制转换,如果放错类型会崩溃

 

// 泛型(安全高效)

List list = new List();

list.Add(1);

// list.Add("Hello"); // 编译错误!类型不匹配

int num = list[0]; // 直接使用,无需转换

 

总结

System.Collections.Generic 是 .NET 中管理数据的“瑞士军刀”,提供了一系列高效、类型安全的集合类。

核心优势:避免类型错误、提升性能、代码更清晰。

适用场景:几乎所有需要存储和管理数据的场景(如列表、字典、队列等)。

 

在面试中,你可以结合项目经验举例,比如:“在开票系统中,我用 List 存储发票数据,用 Dictionary 快速查找税率,这样既安全又高效。”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值