gpt4 book ai didi

c# - 在 C# 中,是否可以向集合添加一个值,同时将其分配给另一个变量

转载 作者:行者123 更新时间:2023-11-30 13:19:08 25 4
gpt4 key购买 nike

我正在使用条件运算符来检查某个值是否已缓存在集合中,如果没有,则按如下方式调用适当的方法:

facilityQuantity = facilityFundedAmts.ContainsKey(facilityId) ? facilityFundedAmts[facilityId] : facilityHolding.Funded();

是否可以通过某种方式将 facilityHolding.Funded() 添加到同一行中的 facilityFundedAmts 集合?

最佳答案

封装你正在做的事情的扩展方法怎么样?您可以将键和一个函数传递给它,如果它不存在则可用于创建该值:

public static TValue GetOrAdd<TKey, TValue>(this IDictionary<TKey, TValue> source, TKey key, Func<TValue> valueFunc)
{
TValue value;

if (!source.TryGetValue(key, out value))
{
value = valueFunc();
source.Add(key, value);
}

return value;
}

并按如下方式使用它:

facilityQuantity = facilityFundedAmts.GetOrAdd(facilityId, () => facilityHolding.Funded());

正如评论中所指出的,有一个从方法组到 Func<TValue> 的隐式转换可用, 所以你也可以这样写:

facilityQuantity = facilityFundedAmts.GetOrAdd(facilityId, facilityHolding.Funded);

关于c# - 在 C# 中,是否可以向集合添加一个值,同时将其分配给另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774783/

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