TryGetValue返回Null,即使键存在



我对一些字典对象进行了梳理以获得值,但它们都返回null,即使当我检查它们是否包含键时,具有键的对象返回true。我还可以使用foreach遍历每个键,以获得基于该键的值。。。。我迷失了

foreach (var item in treeView.SelectedItems)
{
    string reportName = item.Header.ToString();
    string reportPath = "";
    reportsAvail.TryGetValue(reportName, out reportPath);
    reports.TryGetValue(reportName, out reportPath);
    additionalReports.TryGetValue(reportName, out reportPath);
    bool test; 
    test = reportsAvail.ContainsKey(reportName);
    test = reports.ContainsKey(reportName);
    test = additionalReports.ContainsKey(reportName);
    foreach (var y in reportsAvail)
    {
        if (y.Key.ToString() == reportName)
        {
            textBlock1.Text = y.Value;
            reportPath = y.Value;
        }
    }
}

奇怪的是它曾经工作过。。。我不确定是什么阻止了它

您使用TryGetValue三次,每次都覆盖reportPath。因此,即使第一个或第二个包含reportName,如果第三个不包含,reportPath也将再次为null

也许这可以修复它:

bool reportFound = reportsAvail.TryGetValue(reportName, out reportPath);
if(!reportFound)
    reportFound = reports.TryGetValue(reportName, out reportPath);
if(!reportFound)
    reportFound = additionalReports.TryGetValue(reportName, out reportPath);

最新更新