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

对于我们处理的每个"小部件",此代码将运行多达数亿次,因此正在寻找一种"有效方法"来执行此操作。

C# 返回字典查找的结果,或者如果 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"。

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