gpt4 book ai didi

c# - 强制转换 C# 参数?

转载 作者:IT王子 更新时间:2023-10-29 04:24:35 24 4
gpt4 key购买 nike

是否可以在 C# 中删除 param 参数?我有:

Dictionary<string,object> dict;  // but I know all values are strings
string key, value;

粗略地说(如果我没有静态类型)我想做的是:

dict.TryGetValue(key, out value);

但这显然无法编译,因为它“无法从‘out string’转换为‘out object’”。

我使用的解决方法是:

object valueAsObject;
dict.TryGetValue(key, out valueAsObject);
value = (string) valueAsObject;

但这看起来很尴尬。

是否有任何一种语言功能可以让我在方法调用中转换一个 out 参数,所以它会为我做这个切换?我想不出任何有用的语法,而且我似乎无法用谷歌找到任何东西。

最佳答案

我不知道这是否是个好主意,但您可以添加一个通用的扩展方法:

    static bool TryGetTypedValue<TKey, TValue, TActual>(
this IDictionary<TKey, TValue> data,
TKey key,
out TActual value) where TActual : TValue
{
TValue tmp;
if (data.TryGetValue(key, out tmp))
{
value = (TActual)tmp;
return true;
}
value = default(TActual);
return false;
}
static void Main()
{
Dictionary<string,object> dict
= new Dictionary<string,object>();
dict.Add("abc","def");
string key = "abc", value;
dict.TryGetTypedValue(key, out value);
}

关于c# - 强制转换 C# 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343704/

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