सामान्य टाइप प्रणाली (सीटीएस)
माइक्रोसॉफ्ट के .नेट फ्रेमवर्क में, सामान्य टाइप प्रणाली (सीटीएस) एक मानक है जो निर्दिष्ट करता है कि कंप्यूटर मेमोरी में टाइप परिभाषा तथा विशेष प्रकार के मान कैसे प्रतिष्ठित किए जाते हैं। इसका उद्देश्य विभिन्न प्रोग्रामिंग भाषाओं में लिखे गए प्रोग्रामों को सरलता से जानकारी साझा करने की अनुमति देना है। प्रोग्रामिंग भाषाओं में, टाइप को, मानों के वर्ग; उदाहरण के लिए, "0 से 10 तक के सभी पूर्णांक" तथा उन मानों पर संभव संक्रियाओं; उदाहरण के लिए, जोड़ने और घटाने के अनुमति की परिभाषा के रूप में वर्णित किया जा सकता है।
सीटीएस के लिए विनिर्देश एक्मा मानक 335, सामान्य भाषा अवसंरचना (सीएलआई) विभाजन I से VI में निहित है। कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर और सीटीएस माइक्रोसॉफ्ट द्वारा निर्मित किए गए थे, तथा .नेट फ्रेमवर्क, इसी मानक का कार्यान्वयन है।
सामान्य टाइप प्रणाली के कार्य
- एक ऐसा ढांचा स्थापित करना, जो भाषाओं के बीच संगठन, टाइप सुरक्षा और ऊच्च प्रदर्शन को सक्षम करने में मदद करता है।
- एक वस्तु-उन्मुख प्रारूप प्रदान करना जो कई प्रोग्रामिंग भाषाओं के पूर्ण कार्यान्वयन का समर्थन करता है।
- विभिन्न भाषाओं में लिखे गए ऑब्जेक्ट्स एक दूसरे के साथ संवाद कर सकें, इसे सुनिश्चित करने के लिए नियमों को परिभाषित करना।
- सीटीएस उन नियमों को भी परिभाषित करता है जो यह सुनिश्चित करते हैं कि विभिन्न भाषाओं में लिखे गए डेटा प्रकार के ऑब्जेक्ट एक दूसरे के साथ संवाद करने में सक्षम हैं।
- सीटीएस, टाइप की दृश्यता और सदस्यों तक पहुंच के नियमों को भी निर्धारित करता है, अर्थात् सीटीएस, टाइप के लिए दशमा निर्धारित करने के नियमों की स्थापना करता है, और कॉमन भाषा रनटाइम दृश्यता नियमों का पालन करता है।
- सीटीएस, टाइप वंशानुक्रम , वर्चुअल मेथड्स और ऑब्जेक्ट लाइफटाइम को नियंत्रित करने वाले नियमों को परिभाषित करता है।
- .नेट द्वारा समर्थित भाषाएँ सभी या कुछ सामान्य डेटा टाइप को लागू कर सकती हैं।
अंशमान्य मानों को पूर्णांकित करते समय, फ्रेमवर्क के भीतर स्वतः निर्धारित रूप से हैफ़्ट-टू-इवन विधि का उपयोग किया जाता है। दूसरे संस्करण से पूर्व, "सममिति गणितीय पूर्णांकन" केवल प्रोग्रामर के विकल्प के रूप में उपलब्ध था।[1]
- इसका उपयोग अन्य भाषाओं के साथ संवाद करने के लिए किया जाता है
टाइप श्रेणियां
सामान्य प्रकार की प्रणाली दो प्रकार की सामान्य श्रेणियों का समर्थन करती है:
मूल्य प्रकार
मूल्य प्रकारों में सीधे उनका डेटा होता है, और मूल्य प्रकारों के उदाहरण या तो कॉल स्टैक पर आवंटित किए जाते हैं या संरचना में पंक्ति के भीतर आवंटित किए जाते हैं। मूल्य प्रकार अंतर्निहित अर्थात रनटाइम द्वारा कार्यान्वित, उपयोगकर्ता परिभाषित, या गणना के रूप मे हो सकते हैं।
- संदर्भ प्रकार
- संदर्भ प्रकार मान के मेमोरी पते के लिए एक संदर्भ संग्रहीत करते हैं, और यह हीप पर आवंटित होते हैं। संदर्भ प्रकार स्व-वर्णनात्मक प्रकार, पॉइंटर प्रकार या इंटरफेस प्रकार हो सकते हैं। संदर्भ टाइप का प्रकार स्व-वर्णनात्मक टाइपों के मानों से निर्धारित किया जा सकता है। स्व-वर्णनात्मक प्रकार विस्तार से ऐरे और कक्षा प्रकार में विभाजित होते हैं। कक्षा प्रकार उपयोगकर्ता-निर्मित कक्षाओं, बॉक्स्ड मान प्रकार और डेलीगेट्स को समेकित करते हैं।
विसुअल बेसिक .नेट में लिखा गया निम्न उदाहरण संदर्भ प्रकारों और मान प्रकारों के मध्य अंतर को दर्शाता है:
Imports System
Class Class1
Public Value As Integer = 0
End Class 'Class1
Class Test
Shared Sub Main()
Dim val1 As Integer = 0
Dim val2 As Integer = val1
val2 = 123
Dim ref1 As New Class1()
Dim ref2 As Class1 = ref1
ref2.Value = 123
Console.WriteLine("Values: {0}, {1}", val1, val2)
Console.WriteLine("Refs: {0}, {1}", ref1.Value, ref2.Value)
End Sub 'Main
End Class 'Test
उपरोक्त उदाहरण का आउटपुट
मान: 0, 123 संदर्भ: 123, 123
बॉक्सिंग और अनबॉक्सिंग
बॉक्सिंग
मूल्य प्रकारों को संदर्भ प्रकारों में परिवर्तित करना बॉक्सिंग (कंप्यूटर विज्ञान) के रूप में भी जाना जाता है। जैसा कि नीचे दिए गए उदाहरण में देखा जा सकता है, यह आवश्यक नहीं है कि कंपाइलर को Int32 को किसी वस्तु के लिए बॉक्सिंग किया जाए, क्योंकि यह स्वयं इसका ख्याल रखता है।
Int32 x = 10;
object o = x ; // Implicit boxing
Console.WriteLine("The Object o = {0}",o); // prints out "The Object o = 10"
हालाँकि, एक Int32 को हमेशा इस तरह स्पष्ट रूप से बॉक्स किया जा सकता है:
Int32 x = 10;
object o = (object) x; // Explicit boxing
Console.WriteLine("The object o = {0}",o); // prints out "The object o = 10"
अनबॉक्सिंग
निम्न उदाहरण यह दिखाने का इरादा रखता है कि किसी संदर्भ प्रकार को मान प्रकार पर वापस कैसे अनबॉक्स किया जाए। सबसे पहले एक Int32 को किसी ऑब्जेक्ट में बॉक्स किया जाता है, और फिर इसे फिर से अनबॉक्स किया जाता है। ध्यान दें कि अनबॉक्सिंग के लिए स्पष्ट कास्ट की आवश्यकता होती है।
Int32 x = 5;
object o1 = x; // Implicit Boxing
x = (int)o1; // Explicit Unboxing
यह भी देखें
- ।शुद्ध रूपरेखा
- ब्लिटेबल प्रकार
- सामान्य भाषा अवसंरचना
संदर्भ