C#返回Dictionary Lookup的结果,或者NULL返回其他内容

时间:2016-02-11 18:55:13

标签: c#

这是我当前的功能(它有效,但想知道是否有更简洁的方法)。

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中找到了某些内容,则返回该内容。如果没有,请返回其他内容。我关心的是引用空字典对象并抛出错误。我当然可以捕获错误并返回一些内容,但不确定这是否是最佳方法。

对于我们处理的每个“窗口小部件”,此代码将运行数亿次,因此需要“有效的方法”来执行此操作。

1 个答案:

答案 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”。

不要忽视这样的警告。我也强烈建议你不要暴露公共领域......