9

Dictionary<string, int>キーの値を見つけるために一度呼び出す方法はありますか? 現在、次のような2つの呼び出しを行っています。

if(_dictionary.ContainsKey("key") {
 int _value = _dictionary["key"];
}

私はそれを次のようにしたい:

object _value = _dictionary["key"] 
//but this one is throwing exception if there is no such key

そのようなキーがない場合、または1回の呼び出しで値を取得する場合、nullが必要ですか?

4

4 に答える 4

12

使用できますTryGetValue

int value;
bool exists = _dictionary.TryGetValue("key", out value);

TryGetValue指定されたキーが含まれている場合は true を返し、そうでない場合は false を返します。

于 2013-06-30T00:22:02.747 に答える
1

あなたの目的のために、これはおそらくそれを行うはずです。あなたが質問で尋ねたように、一度にすべて、nullまたは値をオブジェクトに取得します:

object obj = _dictionary.ContainsKey("key") ? _dictionary["key"] as object : null;

また..

int? result = _dictionary.ContainsKey("key") ? _dictionary["key"] : (int?)null;
于 2013-06-30T00:35:00.690 に答える
0

このようなことを行うことができると思います (または、より明確な拡張メソッドを記述します)。

        object _value = _dictionary.ContainsKey(myString) ? _dictionary[myString] : (int?)null;

それを使用して特に満足できるかどうかはわかりませんが、null と「Found」条件を組み合わせることで、問題を少し先の null チェックに移すだけだと思っていたでしょう。

于 2013-06-30T00:47:25.753 に答える