c#代码实现将字典Dictionary<TKey, TValue>中 TValue变泛型T 要求用dynamic
时间: 2024-02-09 16:13:12 浏览: 25
在 C# 中将字典 `Dictionary<TKey, TValue>` 中的 `TValue` 变成泛型 `T`,可以使用 `dynamic` 关键字来实现。
下面是一个示例代码:
```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, dynamic> dict)
{
Dictionary<string, T> newDict = new Dictionary<string, T>();
foreach (KeyValuePair<string, dynamic> kvp in dict)
{
newDict.Add(kvp.Key, (T)kvp.Value);
}
return newDict;
}
// 调用泛型方法,将字典中的值类型转换成泛型 T
Dictionary<string, T> newDict = ConvertDict<T>(myDict);
// 遍历新的字典中的元素
foreach (KeyValuePair<string, T> kvp in newDict)
{
Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
}
}
}
```
上述代码中,我们首先创建了一个字典 `myDict`,键的类型为字符串,值的类型为整数。然后定义了一个泛型方法 `ConvertDict<T>`,该方法接受一个字典,值的类型为 `dynamic`。在方法中,我们遍历字典中的元素,将值类型从 `dynamic` 转换成泛型类型 `T`,并创建一个新的字典。最后返回新的字典。
接下来,我们调用泛型方法 `ConvertDict<T>`,将字典 `myDict` 中的值类型从整数转换成泛型类型 `T`,并将结果保存到一个新的字典 `newDict` 中。最后,我们遍历新的字典 `newDict` 中的元素,输出每个键值对的键和值。注意,这里使用了 `dynamic` 关键字来实现将值类型从整数转换成泛型类型 `T`。