पहली विधि के लिए, दो मापदंडों के प्रकार के एक ही हो सकता है,, int
और int
है जैसे। प्रकार IComparable
इंटरफ़ेस को लागू करने की है।
दूसरी विधि के लिए, दो पैरामीटर विभिन्न प्रकार हो सकता है। दोनों प्रकार के IComparable
इंटरफ़ेस को लागू करना चाहिए, लेकिन एक ही है, जैसे, int
और string
होने की जरूरत नहीं है।
नोट यदि प्रकार ही नहीं हैं कि IComparable.CompareTo method संभावना एक अपवाद फेंक देते हैं। इसलिए यह सुनिश्चित करें कि प्रकार वास्तव में एक ही कर रहे हैं बनाने के लिए बेहतर है। आप अपने पहले विधि, या यहाँ तक कि सामान्य IComparable<T> interface का उपयोग करके बेहतर उपयोग करके ऐसा कर सकते हैं।
अनुवर्ती प्रश्न निश्चित रूप से, यह है: इन दो तरीकों के बीच क्या अंतर है?
पहले:
public static int Foo<T1, T2>(T1 first, T2 second) where T1 : IComparable<T2>
{
return first.CompareTo(second);
}
दूसरा:
public static int Foo<T>(IComparable<T> first, T second)
{
return first.CompareTo(second)
}
उत्तर: पहली विधि पहला तर्क बॉक्स नहीं है, जबकि दूसरी विधि है।
यह उस पोस्ट का सटीक डुप्लिकेट नहीं है, क्योंकि यहां हमारे पास दो पैरामीटर हैं और यह कुछ मानदंडों को बदलता है। अंतर देखने के पहले जवाब को देखें –