मैं एक शब्दकोश कुंजी के रूप में एक कस्टम वस्तु का उपयोग करना चाहते, मुख्य रूप से, मैं कुछ इस तरह है: (मैं .net 4.0 उपयोग नहीं कर सकते तो मैं tuples नहीं है)उपयोग कस्टम वस्तु के रूप में शब्दकोश कुंजी
class Tuple<A, B> : IEquatable<Tuple<A,B>>
{
public A AValue { get; set; }
public B BValue { get; set; }
public Tuple(A a, B b){ AValue = a; BValue = b; }
public bool Equals(Tuple<A, B> tuple)
{
return tuple.AValue.Equals(AValue) && tuple.BValue.Equals(BValue);
}
public bool Equals(object o)
{
return this.Equals(o as Tuple<A,B>);
}
}
मैं फिर ऐसा कुछ करता हूं।
var boolmap = new Dictionary<Tuple<bool, bool>, string>();
boolmap.Add(new Tuple<bool,bool>(true, true), "A");
boolmap.Add(new Tuple<bool,bool>(true, false), "B");
boolmap.Add(new Tuple<bool,bool>(false, true), "C");
boolmap.Add(new Tuple<bool,bool>(false, false), "D");
var str = boolmap[new Tuple<bool,bool>(true, false)];
मुझे अंतिम पंक्ति में एक KeyNotFound अपवाद मिलता है। ऐसा क्यों है ? क्या यह पर्याप्त नहीं है कि मैं IEquatable लागू करता हूँ?
धन्यवाद
आपके पास हैश कोड कार्यान्वयन कहां है? यदि आप बराबर डालते हैं तो आपको हमेशा हैश कोड प्राप्त होना चाहिए – Manatherin
आपका कोड आपको एक चेतावनी देता है, और किसी कारण से। जब आप उस चेतावनी को ठीक करते हैं, तो आपको एक और चेतावनी मिल जाएगी - और जब आप इसे ठीक करेंगे, तो आपका कोड काम करेगा। चेतावनियों को कभी अनदेखा न करें। –
आप देख सकते थे: [उपयोग-ए-ऑब्जेक्ट-ए-जेनरिक-डिक्शनरी-की-इन-नेट] (http: // stackoverflow।कॉम/प्रश्न/634826/उपयोग-ए-ऑब्जेक्ट-ए-जेनरिक-डिक्शनरी-की-इन-नेट) – nawfal