指定したキーが辞書に見つからない場合に返すデフォルト値を指定できるようにしたいと考えています。
例えば
int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);
にある場合key
はmyDictionary
foo
、辞書の値を保持する必要があります。それ以外の場合は保持し5
ます。
指定したキーが辞書に見つからない場合に返すデフォルト値を指定できるようにしたいと考えています。
例えば
int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);
にある場合key
はmyDictionary
foo
、辞書の値を保持する必要があります。それ以外の場合は保持し5
ます。
ここで、IDictionary に拡張メソッドを追加することでうまく機能するコードを見つけました。
using System.Collections.Generic;
namespace MyNamespace {
public static class DictionaryExtensions {
public static V GetValue<K, V>(this IDictionary<K, V> dict, K key) {
return dict.GetValue(key, default(V));
}
public static V GetValue<K, V>(this IDictionary<K, V> dict, K key, V defaultValue) {
V value;
return dict.TryGetValue(key, out value) ? value : defaultValue;
}
}
}
最善の方法は、TryGetValue を使用することです。可能な方法は、次のようにすることです。
int default = 5;
string key = "MyKey";
int foo = 0;
defaultValue = 5;
(myDictionary.TryGetValue(key, out foo))?return foo: return defaultValue;
存在しない値を取得しようとすると、TryGetValue は false を返します。これは、句の 2 番目の部分を使用することを意味します。
また、foo をデフォルト値に設定し、TryGetValue を使用して、いずれの場合も foo を返すこともできます。