一、集合初始化器的基礎使用
在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 編輯過