1

我有几个字典对象被梳理以获取一个值,但它们都返回 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;
        }
    }
}

奇怪的是它曾经可以工作……我不确定是什么阻止了它

4

1 回答 1

5

您使用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);
于 2015-03-24T14:50:22.420 回答