即使密钥存在,TryGetValue也会返回Null?

时间:2015-03-24 14:41:04

标签: c# wpf dictionary null trygetvalue

我有一些字典对象被梳理得到一个值,但是当我检查它们是否包含密钥时,它们都返回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;
        }
    }
}

使用它有什么奇怪的工作......我不确定是什么阻止了它

1 个答案:

答案 0 :(得分:3)

您正在使用TryGetValue三次,而且每次都会覆盖reportPath。因此,即使第一个或第二个包含reportName,如果第三个包含reportPathnull将再次包含bool reportFound = reportsAvail.TryGetValue(reportName, out reportPath); if(!reportFound) reportFound = reports.TryGetValue(reportName, out reportPath); if(!reportFound) reportFound = additionalReports.TryGetValue(reportName, out reportPath);

也许这可以解决它:

{{1}}