一、集合初始化器的基础使用
在C#中,集合初始化器允许我们在创建集合对象时,同时对其进行初始化填充元素。例如,对于List<T>
类型,传统创建并添加元素的方式是:
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
而使用集合初始化器可以更简洁地完成相同操作:
List<int> numbers = new List<int> { 1, 2, 3 };
同样,对于字典类型Dictionary<TKey, TValue>
,也能通过集合初始化器快速填充数据:
Dictionary<string, int> scores = new Dictionary<string, int>
{
{ "Alice", 90 },
{ "Bob", 85 },
{ "Charlie", 95 }
};
这种方式让代码更加紧凑直观,在初始化集合时一目了然地看到元素内容。
二、集合表达式的进阶特性
1. 目标类型推断
从C# 9.0开始,在使用集合初始化器时,当右侧的集合初始化表达式能够明确推断出类型时,new
关键字后的类型参数可以省略。比如:
var numbers = [1, 2, 3]; // 推断为List<int>
var scores = new() { { "Alice", 90 }, { "Bob", 85 }, { "Charlie", 95 } }; // 推断为Dictionary<string, int>
这里的var
根据初始化内容自动推断出集合的具体类型,进一步简化了代码书写。
2. 范围初始化
C# 10引入了范围初始化语法,能够更方便地初始化连续的元素序列。例如,创建一个包含从1到10的整数列表:
var rangeNumbers = Enumerable.Range(1, 10).ToList();
// 新的范围初始化方式
var newRangeNumbers = [1..11];
[1..11]
表示从1开始(包含)到11结束(不包含)的元素序列,直接初始化为集合,减少了对Enumerable.Range
方法的依赖,使代码更简洁。
3. 嵌套集合初始化
对于包含集合类型元素的集合,也可以通过嵌套集合初始化的方式快速构建。例如,创建一个二维整数列表:
var twoDList = new List<List<int>>
{
new List<int> { 1, 2, 3 },
new List<int> { 4, 5, 6 },
new List<int> { 7, 8, 9 }
};
这种方式对于构建复杂的数据结构十分高效,并且层次清晰。
三、集合表达式在实际项目中的应用场景
1. 配置数据初始化
在项目的配置文件读取和处理中,常常需要初始化集合类型的配置数据。比如,读取一个包含多个数据库连接字符串的配置项:
var connectionStrings = new List<string>
{
"Data Source=Server1;Initial Catalog=DB1;User ID=user1;Password=pass1",
"Data Source=Server2;Initial Catalog=DB2;User ID=user2;Password=pass2"
};
使用集合表达式可以快速将配置数据初始化到集合中,便于后续使用。
2. 数据模拟与测试
在单元测试或数据模拟场景下,需要快速创建一些测试数据集合。例如,模拟一个包含多个用户对象的列表:
var testUsers = new List<User>
{
new User { Name = "Alice", Age = 25 },
new User { Name = "Bob", Age = 30 },
new User { Name = "Charlie", Age = 35 }
};
简洁的集合初始化方式让测试数据的创建更加便捷,提高开发效率。
集合表达式作为C#.NET现代化进程中的重要特性,通过各种语法糖和新功能,让集合的创建和初始化变得更加简洁高效。熟练掌握这些特性,能帮助开发者编写出更优雅、易读的代码。
以上介绍了集合表达式的常见用法与应用场景。
阅读原文:原文链接
该文章在 2025/5/6 12:47:07 编辑过