📜  c# 泛型类集合 - C# (1)

📅  最后修改于: 2023-12-03 14:59:42.967000             🧑  作者: Mango

C# 泛型类集合

简介

在 C# 中,泛型类集合是一种非常强大和灵活的数据结构,它们可以存储和操作具有相同数据类型的对象。泛型类集合提供了一组用于检索、添加、删除和遍历数据的方法。

C# 提供了多种泛型类集合,包括 List、Dictionary、Queue、Stack 等。这些集合都是通过泛型类实现的,这意味着它们可以在创建时指定所存储的数据类型,并在编译时进行类型检查,确保类型安全。

泛型类集合的优点

使用泛型类集合有以下几个优点:

  1. 类型安全:泛型类集合在编译时进行类型检查,确保只能存储指定类型的对象,避免了在运行时出现类型错误的可能性。

  2. 性能优化:泛型类集合可以避免装箱和拆箱的开销。由于泛型类集合是具体类型而不是 object 类型,所以在存储和检索数据时不需要进行类型转换,提高了性能。

  3. 复用性:泛型类集合可以重复使用,不需要为每种数据类型编写一个相应的集合类。只需通过指定泛型参数来创建不同类型的集合实例。

  4. 扩展性:泛型类集合提供了丰富的方法和属性,用于满足各种操作需求。同时,你也可以通过继承泛型类或实现泛型接口来扩展和自定义集合的功能。

常用的泛型类集合

以下是常用的泛型类集合的简要说明:

List

List<T> 是一个可动态调整大小并且可以引用泛型类型 T 的强类型集合。它提供了添加、删除、查找和排序等操作方法。你可以使用索引访问集合中的元素,也可以使用 ForEachGetEnumerator 枚举集合。

例子:

List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

// 输出:
// 1
// 2
// 3
Dictionary<TKey, TValue>

Dictionary<TKey, TValue> 是一个表示键值对集合的泛型类。它提供了通过键来查找值的能力,并支持添加、删除和更新键值对。TKeyTValue 是键和值的类型参数。

例子:

Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("Alice", 25);
ageMap.Add("Bob", 30);
ageMap.Add("Carol", 35);

foreach (KeyValuePair<string, int> entry in ageMap)
{
    Console.WriteLine($"{entry.Key}: {entry.Value}");
}

// 输出:
// Alice: 25
// Bob: 30
// Carol: 35
Queue

Queue<T> 是一个表示先进先出(FIFO)集合的泛型类。它提供了添加、删除和检索元素的方法,可用于实现队列数据结构。

例子:

Queue<string> names = new Queue<string>();
names.Enqueue("Alice");
names.Enqueue("Bob");
names.Enqueue("Carol");

while (names.Count > 0)
{
    Console.WriteLine(names.Dequeue());
}

// 输出:
// Alice
// Bob
// Carol
Stack

Stack<T> 是一个表示后进先出(LIFO)集合的泛型类。它提供了添加、删除和检索元素的方法,可用于实现栈数据结构。

例子:

Stack<string> names = new Stack<string>();
names.Push("Alice");
names.Push("Bob");
names.Push("Carol");

while (names.Count > 0)
{
    Console.WriteLine(names.Pop());
}

// 输出:
// Carol
// Bob
// Alice
总结

泛型类集合是 C# 中一种强大和灵活的数据结构,提供了类型安全、性能优化、复用性和扩展性等优点。这些集合包括 List、Dictionary、Queue、Stack 等,通过泛型类实现,可以存储具有相同类型的对象并进行各种操作。

希望本文对你理解和使用 C# 泛型类集合有所帮助!