即使键存在,TryGetValue returns 还是 Null?

TryGetValue returns Null even though key exists?

我梳理了一些字典对象以获取值,但所有这些对象 return 为空,即使当我检查它们是否包含具有键 [=16= 的键时也是如此] 是真的。我还可以使用 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);