C# 集合(Collection)


C# 集合(Collection)是一组对象的容器。C# 集合框架提供了许多集合类型,如:列表、哈希表、队列等,这些集合类型的实现以及细节随着版本的变化而改变。

1、常用的集合类型

列表(List):List是泛型类,使用时需要指定类型。它是一个可变长度的列表,可以添加和删除项,所以它是一个动态的数组。例如:

List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");

字典(Dictionary):Dictionary是一个键/值对集合的实现,在字典中,每个键都对应一个唯一的值,我们通过键来获取值。例如:

Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("apple", "苹果");
dic.Add("orange", "橙子");
string value = dic["apple"];

队列(Queeu):Queue是一个先进先出(FIFO)的集合类型,可以在开头和结尾添加或删除项。例如:

Queue<string> que = new Queue<string>();
que.Enqueue("one");
que.Enqueue("two");
que.Enqueue("three");
string item = que.Dequeue(); // 弹出队列头的元素

栈(Stack):Stack是一个后进先出(LIFO)的集合类型。它类似于一叠面板,我们可以在顶部添加或删除元素。例如:

Stack<string> sta = new Stack<string>();
sta.Push("one");
sta.Push("two");
sta.Push("three");
string item = sta.Pop(); // 弹出栈顶的元素

2、IEnumerable 和 IEnumerator

IEnumerable是一个枚举器接口,它是许多集合类型的基础接口。这个接口定义了一个GetEnumerator()方法,该方法返回一个IEnumerator对象,它提供了对这个集合的只读访问。IEnumerator对象可以依次遍历集合的每个元素。

3、LINQ

LINQ是一种语言集成查询技术,它提供了一种在.NET平台上对任何数据源(包括对象、关系数据库、XML、Web服务等)进行动态查询的方式。通过LINQ,我们可以使查询更加直观和易于编写,避免了很多样板式代码。

例如,我们可以使用LINQ查询一个字符串列表中所有的长度为3的子字符串:

List<string> list = new List<string>();
list.Add("hello");
list.Add("world");

var res = from s in list
          where s.Length == 3
          select s;

以上就是关于C#集合的基础内容。在实际编程时,我们需要根据场景选择合适的集合类型,避免过多的转换或性能损耗。同时,熟练使用LINQ在数据处理时也将大大提高开发效率。