वर्तमान में मैंशब्दकोशों ValueOrNull/ValueorDefault
var x = dict.ContainsKey(key) ? dict[key] : defaultValue
उपयोग कर रहा हूँ मैं किसी तरह शब्दकोश [कुंजी] है पर लौटने nonexistant चाबी के लिए अशक्त करना चाहते हैं, तो मैं लिख सकता है कुछ की तरह
var x = dict[key] ?? defaultValue;
यह भी linq प्रश्न आदि का हिस्सा बनता है इसलिए मैं एक लाइन समाधान पसंद करूंगा। एक विस्तार विधि के साथ
public abstract class MyHelper {
public static V GetValueOrDefault<K,V>(Dictionary<K,V> dic, K key) {
V ret;
bool found = dic.TryGetValue(key, out ret);
if (found) { return ret; }
return default(V);
}
}
var x = MyHelper.GetValueOrDefault(dic, key);
वर्तमान उत्तर सही हैं, और यह भी देखें [मेरा समान प्रश्न] (http://stackoverflow.com/questions/6214975), जो अधिक चर्चा है। हालांकि आपको 'dict.ContainsKey (कुंजी) से बचना चाहिए? dict [key] 'जैसा कि आप दो बार शब्दकोश को देख रहे हैं, एक बार' ContainsKey 'के लिए और फिर' [] 'अनुक्रमणिका के लिए। 'TryGetValue' बदसूरत और गैर-इनलाइन है, लेकिन यह एक ही ऑपरेशन है। – Keith