नहीं, यह संभव नहीं है। यह मुख्य रूप से सी ++ टेम्पलेट्स और सी # जेनेरिक के बीच अंतरों के कारण होता है:
जब आप सी ++ टेम्पलेट संकलित करते हैं, परिणामी कोड में vector<int>
और vector<string>
जैसे प्रकार होते हैं। इसका मतलब है कि कंपाइलर को सभी संभावित प्रकार पैरामीटर जानना है, लेकिन इसका मतलब यह भी है कि यह उन्हें शुद्धता के लिए जांच सकता है।
जब आप सी # जेनेरिक प्रकार संकलित करते हैं, तो आप वास्तव में केवल एक सामान्य प्रकार बना रहे हैं: List<T>
। इस वजह से, सी # कंपाइलर को संकलन प्रकार पर सभी संभावित प्रकारों को नहीं जानना है, जिसका अर्थ है कि आप बाइनरी पुस्तकालयों में सामान्य प्रकार प्राप्त कर सकते हैं, जो सी ++ के साथ संभव नहीं है। लेकिन इसका मतलब यह भी है कि आप सभी प्रकार की जांच नहीं कर सकते हैं। ऐसा कुछ करने में सक्षम होने के लिए, बाधाएं हैं, लेकिन वे कई चीजें नहीं कर सकते हैं सी ++ की संकलन समय जांच कर सकते हैं, जैसे कुछ तरीकों की उपस्थिति की जांच करना (इंटरफ़ेस या कुछ बेस क्लास का उपयोग किए बिना) या उपयुक्त ऑपरेटरों की उपस्थिति।
सी # 4 में, आप कुछ हद तक dynamic
का उपयोग कर टेम्पलेट्स के इस प्रकार के समान प्रभाव को प्राप्त कर सकते हैं, लेकिन यह करता कोई संकलन समय की जाँच, जिसका अर्थ है आप सुरक्षा खोना - यदि आप एक प्रकार नहीं है कि में डाल सकते हैं उचित सदस्य और आप तब तक नहीं पाएंगे जब तक कि आप रनटाइम पर कोड की उस पंक्ति तक नहीं पहुंच जाते।
लेकिन इंटरफ़ेस बाधाएं कुछ टी हस्ताक्षर करने के लिए पहले से ही एक विधि एक्स() को कुछ हस्ताक्षर से मेल करने के लिए एक बहुत अच्छा तरीका है, क्या आपको नहीं लगता? –