C# 中的 IReadOnlyDictionary
和 IReadOnlyList
是接口,用于表示只讀的字典和只讀的列表。這些接口提供了對集合的只讀訪問權限,即不允許對集合進行修改操作,例如添加、刪除或修改元素。這種只讀特性對于需要保護數據完整性或只需要進行讀取操作的場景非常有用。
IReadOnlyDictionary<TKey, TValue>
:IReadOnlyDictionary<TKey, TValue>
接口表示只讀的鍵值對字典。它繼承自IEnumerable<KeyValuePair<TKey, TValue>>
接口,因此可以像遍歷字典一樣遍歷只讀字典中的鍵值對。IReadOnlyDictionary<TKey, TValue>
提供了一組只讀的屬性和方法,例如Count
屬性用于獲取字典中鍵值對的數量,Keys
屬性用于獲取只讀的鍵的集合,Values
屬性用于獲取只讀的值的集合,ContainsKey()
方法用于檢查字典中是否包含指定的鍵,以及TryGetValue()
方法用于根據鍵獲取對應的值。- 示例:
IReadOnlyDictionary<string, int> dictionary = new Dictionary<string, int>()
{{ "Apple", 1 },{ "Banana", 2 },{ "Orange", 3 }
};Console.WriteLine(dictionary["Apple"]); // 輸出: 1// 遍歷只讀字典的鍵值對
foreach (var kvp in dictionary)
{Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
IReadOnlyList<T>
:IReadOnlyList<T>
接口表示只讀的元素列表。它繼承自IEnumerable<T>
接口,因此可以使用迭代器遍歷只讀列表。IReadOnlyList<T>
提供了一組只讀的屬性和方法,例如Count
屬性用于獲取列表中的元素數量,Item[]
屬性用于通過索引訪問列表中的元素,Contains()
方法用于檢查列表中是否包含指定的元素,IndexOf()
方法用于獲取指定元素在列表中的索引位置。- 示例:
IReadOnlyList<string> list = new List<string>() { "Apple", "Banana", "Orange" };Console.WriteLine(list[0]); // 輸出: Apple// 遍歷只讀列表
foreach (var item in list)
{Console.WriteLine(item);
}
需要注意的是,IReadOnlyDictionary
和 IReadOnlyList
接口只提供了對集合的只讀訪問權限,不允許對集合進行修改操作。如果需要對集合進行修改操作,可以使用 Dictionary<TKey, TValue>
和 List<T>
類。