C# 返回字典查找的结果,或者如果 NULL 返回其他内容
本文关键字:返回 NULL 如果 其他 或者 字典 查找 结果 | 更新日期: 2023-09-27 18:34:24
这是我当前的函数(它可以工作,但想知道是否有更干净的方法)。
public static Dictionary<int, double> profileNetworkLowCostPriorityList;
public static double DetermineNetworkSortOrderValue(int network, double fee)
{
if (profileNetworkLowCostPriorityList == null) return fee;
if (profileNetworkLowCostPriorityList[network] != null) return profileNetworkLowCostPriorityList[network];
return fee;
}
基本上,如果Dictonary
对象不为 null 并且在字典中找到了一些东西,则返回该内容。如果没有,请返回其他内容。我关心的是引用空字典对象并抛出错误。我当然可以捕获错误并返回一些东西,但不确定这是否是最好的方法。
对于我们处理的每个"小部件",此代码将运行多达数亿次,因此正在寻找一种"有效方法"来执行此操作。
听起来你只是想要TryGetValue
,基本上:
public static double DetermineNetworkSortOrderValue(int network, double fee)
{
double dictionaryFee;
return profileNetworkLowCostPriorityList == null ||
!profileNetworkLowCostPriorityList.TryGetValue(network, out dictionaryFee)
? fee : dictionaryFee;
}
另请注意,您当前的代码目前不起作用 - 如果网络没有字典条目,则会引发异常。您还应该看到如下编译时警告:
表达式的结果始终为"true",因为类型为"double"的值永远不会等于类型为"double"的"null"。
不要忽视这样的警告。我也强烈建议你不要暴露公共领域......