gpt4 book ai didi

c# - 在泛型方法中将值转换为 T

转载 作者:可可西里 更新时间:2023-11-01 03:13:54 28 4
gpt4 key购买 nike

我有一个破旧的属性映射界面:

interface IPropertyMap
{
bool Exists(string key);
int GetInt(string key);
string GetString(string key);
//etc..
}

我想像这样创建一个扩展方法:

public static T GetOrDefault<T>(this IPropertyMap map, string key, T defaultValue)
{
if (!map.Exists(key))
return defaultValue;
else
{
if (typeof(T) == typeof(int)) return (T)map.GetInt(key);
//etc..
}
}

但是编译器不允许我转换为 T。我尝试添加 where T : struct 但这似乎没有帮助。

我错过了什么?

最佳答案

我相信这是因为编译器不知道它需要执行什么类型的操作。 IIRC,如果你引入拳击,你可以让它工作:

if (typeof(T) == typeof(int)) return (T)(object)map.GetInt(key);

但这在性能方面并不理想。

不幸的是,我认为这只是泛型的一个限制。

关于c# - 在泛型方法中将值转换为 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com