这是我当前的功能(它有效,但想知道是否有更简洁的方法)。
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
对象不为空并且在dictonary中找到了某些内容,则返回该内容。如果没有,请返回其他内容。我关心的是引用空字典对象并抛出错误。我当然可以捕获错误并返回一些内容,但不确定这是否是最佳方法。
对于我们处理的每个“窗口小部件”,此代码将运行数亿次,因此需要“有效的方法”来执行此操作。
答案 0 :(得分:2)
听起来你只想要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”。
不要忽视这样的警告。我也强烈建议你不要暴露公共领域......