को देखते हुए तुलना तरीकों में से दो कार्यान्वयन:सशर्त ऑपरेटर और तुलना प्रतिनिधि
// compares by Key...
private static int CompareByKey(KeyValuePair<int, string> x, KeyValuePair<int, string> y)
{
return x.Key.CompareTo(y.Key);
}
// compares by Value...
private static int CompareByValue(KeyValuePair<int, string> x, KeyValuePair<int, string> y)
{
return x.Value.CompareTo(y.Value);
}
क्यों नहीं होगा निम्नलिखित सशर्त ऑपरेटर कोड ब्लॉक संकलन:
Comparison<KeyValuePair<int, string>> sortMethod;
sortMethod = isSortByActualValue ? CompareByKey : CompareByValue;
संकलक त्रुटि: "सशर्त अभिव्यक्ति का प्रकार नहीं कर सकते निर्धारित किया जाए क्योंकि 'विधि समूह' और 'विधि समूह' '
के बीच कोई अंतर्निहित रूपांतरण नहीं है, हालांकि, समकक्ष कोड ब्लॉक अगर- else d ओ इ एस कोई समस्या आती है नहीं:
Comparison<KeyValuePair<int, string>> sortMethod;
if (isSortByActualValue)
sortMethod = CompareByKey;
else
sortMethod = CompareByValue;
(ऊपर दोनों कार्य में सब अच्छा)
तो सशर्त ऑपरेटर करता है, अगर मैं तुलना प्रतिनिधि डाली:
Comparison<KeyValuePair<int, string>> sortMethod;
sortMethod = isSortByActualValue ? (Comparison<KeyValuePair<int, string>>) CompareByKey : CompareByValue;
(में सब अच्छा उपरोक्त असाइनमेंट, जब कास्ट किया गया था, भले ही कास्टिंग केवल वास्तविक भाग पर था)
तुलना कैसे करें ByAcutalValue और तुलना ByDisplayValue परिभाषित? आप केवल तुलनाबीकी और तुलना ByValue की परिभाषा दिखाते हैं। –
मेरी पोस्टिंग में कोड स्निपेट स्पष्टता के लिए संपादित किया गया था। मुझे एहसास नहीं हुआ कि मैंने केवल आंशिक रूप से नाम (तरीकों का) बदल दिया है। धन्यवाद एरिक, मैंने तुलना ByAckualValue से तुलना करने के लिए सभी संदर्भों को अद्यतन किया है (और तुलना ByDisplayValue तुलना ByValue)। – Arun