c#代码实现将字典Dictionary<TKey, TValue>中 TValue变泛型T
时间: 2024-02-09 10:13:10 浏览: 65
解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
在 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` 中的元素,输出每个键值对的键和值。
阅读全文