मूल रूप से ठीक करने के लिए मैं निम्नलिखित है नहीं कर रहा हूँ:जेनेरिक की कमी मुझे यकीन है कि कैसे या तो एक के साथ इस स्थिति/या मामले
public static bool IsBetween<T>(this T value, T a, T b)
where T : IComparable
{
...
}
public static bool IsBetween<T>(this T value, T a, T b)
where T : IComparable<T>
{
...
}
समस्या मैं ऐसा नहीं कर सकते है, क्योंकि आप नहीं कर सकते एक ही हस्ताक्षर के साथ एक सदस्य है, भले ही बाधाएं अलग हों। लेकिन, यह बताने का कोई तरीका नहीं है कि बाधा IComparable
या IComparable<T>
है। तो, मुझे यकीन नहीं है कि सिर्फ एक को चुनने और इसके साथ जाने के बाहर क्या करना है। और, कोई फर्क नहीं पड़ता कि मैं कौन सा चुनता हूं, मैं दूसरे पर हार रहा हूं क्योंकि वे अलग हैं और एक दूसरे से विरासत में नहीं हैं (जो समझ में आता है)।
क्या मुझे यहां कुछ याद आ रहा है, क्या दोनों का उपयोग करने के लिए एक तरीका है, या क्या मुझे एक (शायद सामान्य संस्करण) चुनना है?
मैंने कभी इस तरह के बारे में कभी सोचा नहीं। मुझे लगता है कि ऐसा इसलिए था क्योंकि मैंने सामान्य संस्करण के साथ शुरुआत की, फिर इसे कॉपी/पेस्ट किया और बस एक त्वरित परिवर्तन करने का प्रयास किया। –
इसके अलावा, यह डिफ़ॉल्ट रूप से 'IComparable 'विकल्प का चयन करने के लिए डिफ़ॉल्ट होगा, और' IComparable' विकल्प दूसरा होगा? –
@ एम-वाई: ओवरलोड रिज़ॉल्यूशन * अधिक विशिष्ट * विधि का चयन करेगा। यदि यह निर्धारित करने का कोई तरीका नहीं है कि कौन सा अधिक विशिष्ट है तो आपको अस्पष्टता त्रुटि मिल जाएगी। –