1

次のコードがあります。

double dd;
Dictionary<string, double> dic = new Dictionary<string,double>();
bool notin = this.summedVars.TryGetValue(bacino, out dic);
if(notin == false)
    this.summedVars.Add(bacino,dic);
dic.TryGetValue(id, out dd);
dic[id] = dd + d;

実行すると、次のエラーが表示されます。

dic は null 参照に設定されています

summedVars値を追加せずに新しいもので初期化するにはどうすればDictionaryよいですか?

4

1 に答える 1

2

TryGetValue が出力パラメーター (dic) を無効にしていると思われます。その行の後にセーフティネットが必要です

例えば

dic = dic ?? new Dictionary<string,double>();

コードは次のようになります。

                double dd;
                Dictionary<string, double> dic;
                bool notin = this.summedVars.TryGetValue(bacino, out dic);
                dic = dic ?? new Dictionary<string,double>();
                if(notin == false)
                    this.summedVars.Add(bacino,dic);
                dic.TryGetValue(id, out dd);
                dic[id] = dd + d;
于 2012-07-16T16:44:31.300 に答える