gpt4 book ai didi

c# - 如果值是元组,如何通过 .TryGetValue() 从字典中读取值?

转载 作者:行者123 更新时间:2023-12-04 07:56:34 25 4
gpt4 key购买 nike

我有一个类型的字典

Dictionary<int, (float, float)>
尝试从中读取值时,我无法使用这种方式
if (myDict.TryGetValue(1, out (float tupleItem1, float tupleItem2))) { /* ... */ }
因为那样我会收到编译错误
enter image description here
它的工作方式是
if (myDict.TryGetValue(1, out (float, float) theTuple)) { /* ... */ }
有没有办法可以像这样直接初始化变量?
if (!myDict.TryGetValue(1, out (float tupleItem1, float tupleItem2)))
{
/* handle if not found */
tupleItem1 = 111;
tupleItem2 = -12345;
}

最佳答案

你不能直接在 out 中解构不幸的是,参数,请参阅 this proposal .
你必须自己解构它:

if (!myDict.TryGetValue(1, out var result))
{
result = (111, -12345);
}

您可以使用扩展方法稍微改善这种情况:
public static class DictionaryExtensions
{
public static TValue? TryGetValue<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key) where TValue : struct
{
return dict.TryGetValue(key, out var result) ? result : null;
}
}
这让你写:
if (myDict.TryGetValue(1) is not (float tupleItem1, float tupleItem2))
{
tupleItem1 = 111;
tupleItem2 = -12345;
}

关于c# - 如果值是元组,如何通过 .TryGetValue() 从字典中读取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68619638/

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