एक अलग StackExchange प्रश्न में, मैंने किसी को इस प्रोटोटाइप का उपयोग करते हुए देखा:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
ध्यान में रखते हुए केवल एक ही प्रकार की बाधा है ( SomeSpecificReferenceType
), इसे लिखने का क्या अंतर और लाभ है, इसके बजाय बस:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
दोनों मामलों में, arg
संकलन-समय प्रकार की जाँच के अधीन होगा। दोनों मामलों में, विधि का शरीर सुरक्षित रूप से उस ज्ञान पर भरोसा कर सकता arg
है जो (या एक वंशज है) एक विशिष्ट प्रकार का है जो संकलन समय पर जाना जाता है।
क्या यह सामान्य वंशानुक्रम के बारे में सीखने से पहले जेनेरिक के बारे में अधिभावी डेवलपर का मामला है? या क्या कोई वैध कारण है कि एक विधि हस्ताक्षर इस तरह से लिखा जाएगा?