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