1

値を取得するためにいくつかのディクショナリ オブジェクトをくまなく調べていますが、キーが含まれているかどうかを確認すると、キーを持つオブジェクトが true を返しますが、それらはすべて null を返します。また、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

3回使用していて、毎回TryGetValue上書きしています。reportPathしたがって、1 番目または 2 番目に が含まれていたreportNameとしても、3 番目に含まれていない場合は、再び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 に答える