फ्रेमवर्क में कुछ निश्चित वर्ग होते हैं जो प्रभावी रूप से उनसे प्राप्त सभी प्रकार की विशेष विशेषताओं से गुजरते हैं, लेकिन उन विशेषताओं के अधिकारी नहीं होते हैं । सीएलआर स्वयं उन वर्गों के लिए बाधाओं के रूप में उपयोग करने के खिलाफ कोई प्रतिबंध नहीं लगाता है, लेकिन उनके लिए बाध्य सामान्य प्रकार गैर-विरासत वाले विशेषताओं को प्राप्त नहीं करेगा जिस तरह से ठोस प्रकार होंगे। C # के रचनाकारों ने फैसला किया कि क्योंकि ऐसा व्यवहार कुछ लोगों को भ्रमित कर सकता है, और वे इसके लिए कोई उपयोगिता देखने में विफल रहे, उन्हें इस तरह की बाधाओं को रोकने के बजाय उन्हें व्यवहार करने की अनुमति देना चाहिए जैसा कि वे CLR में करते हैं।
यदि, उदाहरण के लिए, किसी को लिखने की अनुमति थी void CopyArray<T>(T dest, T source, int start, int count)
:; एक पास करने के लिए dest
और source
तरीकों के लिए जो प्रकार के एक तर्क की उम्मीद कर सकता है System.Array
; आगे, एक संकलन समय मान्यता है कि मिलेगा dest
और source
संगत सरणी प्रकार थे, लेकिन एक सरणी का उपयोग करने का उपयोग कर सकते तत्वों के लिए सक्षम नहीं होगा []
ऑपरेटर।
Array
एक बाधा के रूप में उपयोग करने की अक्षमता ज्यादातर काम करने के लिए बहुत आसान है, चूंकि void CopyArray<T>(T[] dest, T[] source, int start, int count)
लगभग सभी स्थिति में काम करेगी जहां पूर्व विधि काम करेगी। हालांकि, यह एक कमजोरी है: पूर्व विधि इस परिदृश्य में काम करेगी कि एक या दोनों तर्क उन System.Array
मामलों को खारिज करते समय प्रकार के थे जहां तर्क असंगत सरणी प्रकार हैं; एक अधिभार जोड़ने जहां दोनों प्रकार के तर्क थे System.Array
कोड को स्वीकार किए जाने वाले अतिरिक्त मामलों को स्वीकार करना होगा, लेकिन इसे गलत तरीके से स्वीकार किए जाने वाले मामलों को भी बनाना चाहिए।
मुझे लगता है कि ज्यादातर विशेष बाधाओं को गैरकानूनी घोषित करने का निर्णय है। केवल वही जिसका शून्य अर्थ होगा System.Object
[चूंकि अगर वह एक बाधा के रूप में कानूनी था, तो कुछ भी उसे संतुष्ट करेगा]। System.ValueType
शायद बहुत उपयोगी नहीं होगा, क्योंकि प्रकार के संदर्भ ValueType
वास्तव में मूल्य प्रकारों के साथ बहुत अधिक नहीं होते हैं, लेकिन यह प्रतिबिंबित करने वाले मामलों में कुछ मानों को बहुत कम कर सकता है। दोनों System.Enum
और System.Delegate
कुछ असली उपयोग करता है, लेकिन जब से सी # के रचनाकारों उनमें से नहीं सोचा था कि वे कोई अच्छे कारण के लिए गैरकानूनी घोषित कर रहे हैं।