C# 中的 Dictionary<TKey, TValue> 类

Dictionary<TKey, TValue> 是 C# 中的一个泛型集合类,它提供了一种键值对的存储结构,可以用来存储和快速访问数据。它的主要特点如下:

  1. 键值对结构: Dictionary 中的每个元素都是一个键值对,键必须是唯一的,值可以重复。

  2. 快速访问: Dictionary 基于哈希表实现,可以提供 O(1) 的平均访问时间,非常适合作为缓存使用。

  3. 线程安全: Dictionary 本身不是线程安全的,但可以通过使用 ConcurrentDictionary 来实现线程安全。

  4. 可迭代: Dictionary 实现了 IEnumerable 接口,可以使用 foreach 循环遍历其中的键值对。

  5. 可序列化: Dictionary 可以通过 ISerializable 接口进行序列化和反序列化。

下面是一些常用的 Dictionary 操作示例:

// 创建 Dictionary
var dict = new Dictionary<string, int>();

// 添加元素
dict.Add("apple", 1);
dict["banana"] = 2;

// 获取元素
int value = dict["apple"]; // 返回 1
bool exists = dict.ContainsKey("banana"); // 返回 true

// 移除元素
dict.Remove("apple");

// 遍历元素
foreach (var pair in dict)
{
    Console.WriteLine($"Key: {pair.Key}, Value: {pair.Value}");
}

// 清空 Dictionary
dict.Clear();

除了基本的增删改查操作,Dictionary 还提供了一些其他有用的方法和属性:

  • TryGetValue(key, out value): 尝试获取指定键的值,如果键不存在则返回 false。
  • KeysValues: 分别返回 Dictionary 中的所有键和值的集合。
  • Count: 获取 Dictionary 中元素的数量。
  • GetEnumerator(): 返回一个可用于遍历 Dictionary 的枚举器。

总的来说,Dictionary 是 C# 中非常常用和实用的集合类之一,它提供了高效的键值对存储和访问功能,非常适合用作缓存、查找表等场景。对于需要更高级缓存功能的场景,可以考虑使用 MemoryCache 或其他专门的缓存框架。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 将字典 `Dictionary<TKey, TValue>` 的 `TValue` 变成泛型 `T`,可以使用泛型类和泛型方法来实现。 下面是一个示例代码: ```csharp using System; using System.Collections.Generic; class Program { static void Main() { // 创建一个字典,键的类型为字符串,值的类型为整数 Dictionary<string, int> myDict = new Dictionary<string, int>(); // 添加元素到字典 myDict.Add("apple", 1); myDict.Add("banana", 2); myDict.Add("cherry", 3); // 将字典的值类型转换成泛型 T Dictionary<string, T> ConvertDict<T>(Dictionary<string, T> dict, Func<int, T> converter) { Dictionary<string, T> newDict = new Dictionary<string, T>(); foreach (KeyValuePair<string, int> kvp in dict) { newDict.Add(kvp.Key, converter(kvp.Value)); } return newDict; } // 定义一个委托,将整数类型转换成泛型类型 T Func<int, T> converter = x => (T)(object)x; // 调用泛型方法,将字典的值类型转换成泛型 T Dictionary<string, T> newDict = ConvertDict(myDict, converter); // 遍历新的字典的元素 foreach (KeyValuePair<string, T> kvp in newDict) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); } } } ``` 上述代码,我们首先创建了一个字典 `myDict`,键的类型为字符串,值的类型为整数。然后定义了一个泛型方法 `ConvertDict<T>`,该方法接受一个字典和一个将整数类型转换成泛型类型 `T` 的委托。在方法,我们遍历字典的元素,将值类型从整数转换成泛型类型 `T`,并创建一个新的字典。最后返回新的字典。 接下来,我们定义一个将整数类型转换成泛型类型 `T` 的委托,然后调用泛型方法 `ConvertDict<T>`,将字典 `myDict` 的值类型从整数转换成泛型类型 `T`,并将结果保存到一个新的字典 `newDict` 。最后,我们遍历新的字典 `newDict` 的元素,输出每个键值对的键和值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值