सामान्य टाइप प्रणाली (सीटीएस): Difference between revisions

From Vigyanwiki
No edit summary
Line 3: Line 3:
सीटीएस के लिए विनिर्देश एक्मा मानक 335, [[सामान्य भाषा अवसंरचना]] (सीएलआई) विभाजन I से VI में निहित है। कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर और सीटीएस माइक्रोसॉफ्ट द्वारा निर्मित किए गए थे, तथा .नेट  फ्रेमवर्क, इसी मानक का कार्यान्वयन है।
सीटीएस के लिए विनिर्देश एक्मा मानक 335, [[सामान्य भाषा अवसंरचना]] (सीएलआई) विभाजन I से VI में निहित है। कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर और सीटीएस माइक्रोसॉफ्ट द्वारा निर्मित किए गए थे, तथा .नेट  फ्रेमवर्क, इसी मानक का कार्यान्वयन है।


== कॉमन टाइप सिस्टम के कार्य ==
== सामान्य टाइप प्रणाली के कार्य ==
*एक ऐसा ढांचा स्थापित करने के लिए जो क्रॉस-लैंग्वेज इंटीग्रेशन, टाइप सेफ्टी और हाई परफॉर्मेंस कोड एक्जीक्यूशन को सक्षम करने में मदद करता है।
*एक ऐसा ढांचा स्थापित करना, जो भाषाओं के बीच संगठन, टाइप सुरक्षा और ऊच्च प्रदर्शन को सक्षम करने में मदद करता है।
*एक वस्तु-उन्मुख मॉडल प्रदान करने के लिए जो कई प्रोग्रामिंग भाषाओं के पूर्ण कार्यान्वयन का समर्थन करता है।
*एक वस्तु-उन्मुख प्रारूप प्रदान करना जो कई प्रोग्रामिंग भाषाओं के पूर्ण कार्यान्वयन का समर्थन करता है।
* उन नियमों को परिभाषित करने के लिए जिन्हें भाषाओं का पालन करना चाहिए, जो यह सुनिश्चित करने में मदद करता है कि विभिन्न भाषाओं में लिखी गई वस्तुएँ एक दूसरे के साथ परस्पर क्रिया कर सकती हैं।
* विभिन्न भाषाओं में लिखे गए ऑब्जेक्ट्स एक दूसरे के साथ संवाद कर सकें, इसे सुनिश्चित करने के लिए नियमों को परिभाषित करना।
*सीटीएस उन नियमों को भी परिभाषित करता है जो यह सुनिश्चित करते हैं कि विभिन्न भाषाओं में लिखे गए डेटा प्रकार के ऑब्जेक्ट एक दूसरे के साथ बातचीत करने में सक्षम हैं।
*सीटीएस उन नियमों को भी परिभाषित करता है जो यह सुनिश्चित करते हैं कि विभिन्न भाषाओं में लिखे गए डेटा प्रकार के ऑब्जेक्ट एक दूसरे के साथ संवाद करने में सक्षम हैं।
* सीटीएस प्रकार दृश्यता और प्रकार के सदस्यों तक पहुंच के लिए नियमों को भी निर्दिष्ट करता है, यानी सीटीएस नियमों को स्थापित करता है जिसके द्वारा असेंबली एक प्रकार के लिए दायरा बनाती है, और सामान्य भाषा रनटाइम दृश्यता नियमों को लागू करती है।
* सीटीएस, टाइप की दृश्यता और सदस्यों तक पहुंच के नियमों को भी निर्धारित करता है, अर्थात् सीटीएस, टाइप के लिए दशमा निर्धारित करने के नियमों की स्थापना करता है, और कॉमन भाषा रनटाइम दृश्यता नियमों का पालन करता है।
* सीटीएस [[ वंशानुक्रम टाइप करें ]], वर्चुअल मेथड्स और ऑब्जेक्ट लाइफटाइम को नियंत्रित करने वाले नियमों को परिभाषित करता है।
* सीटीएस, [[ वंशानुक्रम टाइप करें |टाइप वंशानुक्रम]] , वर्चुअल मेथड्स और ऑब्जेक्ट लाइफटाइम को नियंत्रित करने वाले नियमों को परिभाषित करता है।
* .नेट  द्वारा समर्थित भाषाएँ सभी या कुछ सामान्य डेटा प्रकारों को लागू कर सकती हैं ...
* .नेट  द्वारा समर्थित भाषाएँ सभी या कुछ सामान्य डेटा टाइप को लागू कर सकती हैं।


भिन्नात्मक मानों को राउंडिंग करते समय, पूरे फ्रेमवर्क में राउंडिंग#राउंड हाफ टू ईवन|हाफवे-टू-ईवन (बैंकर्स) विधि डिफ़ॉल्ट रूप से उपयोग की जाती है। संस्करण 2 के बाद से, प्रोग्रामर के विकल्प द्वारा सममित अंकगणितीय [[गोलाई]] (शून्य से आधा दूर) भी उपलब्ध है।<ref>{{cite web | url = https://docs.microsoft.com/en-us/dotnet/api/system.midpointrounding | title = मिडपॉइंट राउंडिंग एन्यूमरेशन| work = [[Microsoft Docs]]}}</ref>
अंशमान्य मानों को पूर्णांकित करते समय, फ्रेमवर्क के भीतर स्वतः निर्धारित रूप से हैफ़्ट-टू-इवन विधि का उपयोग किया जाता है। दूसरे संस्करण से पूर्व, "सममिति गणितीय [[गोलाई|पूर्णांकन]]" केवल प्रोग्रामर के विकल्प के रूप में उपलब्ध था।<ref>{{cite web | url = https://docs.microsoft.com/en-us/dotnet/api/system.midpointrounding | title = मिडपॉइंट राउंडिंग एन्यूमरेशन| work = [[Microsoft Docs]]}}</ref>
* इसका उपयोग अन्य भाषाओं के साथ संवाद करने के लिए किया जाता है
* इसका उपयोग अन्य भाषाओं के साथ संवाद करने के लिए किया जाता है


Line 82: Line 82:


==बाहरी संबंध==
==बाहरी संबंध==
*[https://msdn.microsoft.com/en-us/library/zcx1eb1e(v=vs.110).aspx माइक्रोसॉफ्ट developer's guide describing the CTS]
*[https://msdn.microsoft.com/en-us/library/zcx1eb1e(v=vs.110).aspx माइक्रोसॉफ्ट developer's guide describing the सीटीएस]
*[https://msdn.microsoft.com/en-us/library/hfa3fa08(v=vs.110).aspx Built-in types in the .नेट  Framework]
*[https://msdn.microsoft.com/en-us/library/hfa3fa08(v=vs.110).aspx Built-in types in the .नेट  Framework]



Revision as of 01:11, 24 June 2023

माइक्रोसॉफ्ट के .नेट फ्रेमवर्क में, सामान्य टाइप प्रणाली (सीटीएस) एक मानक है जो निर्दिष्ट करता है कि कंप्यूटर मेमोरी में टाइप परिभाषा तथा विशेष प्रकार के मान कैसे प्रतिष्ठित किए जाते हैं। इसका उद्देश्य विभिन्न प्रोग्रामिंग भाषाओं में लिखे गए प्रोग्रामों को सरलता से जानकारी साझा करने की अनुमति देना है। प्रोग्रामिंग भाषाओं में, टाइप को, मानों के वर्ग; उदाहरण के लिए, "0 से 10 तक के सभी पूर्णांक" तथा उन मानों पर संभव संक्रियाओं; उदाहरण के लिए, जोड़ने और घटाने के अनुमति की परिभाषा के रूप में वर्णित किया जा सकता है।

सीटीएस के लिए विनिर्देश एक्मा मानक 335, सामान्य भाषा अवसंरचना (सीएलआई) विभाजन I से VI में निहित है। कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर और सीटीएस माइक्रोसॉफ्ट द्वारा निर्मित किए गए थे, तथा .नेट फ्रेमवर्क, इसी मानक का कार्यान्वयन है।

सामान्य टाइप प्रणाली के कार्य

  • एक ऐसा ढांचा स्थापित करना, जो भाषाओं के बीच संगठन, टाइप सुरक्षा और ऊच्च प्रदर्शन को सक्षम करने में मदद करता है।
  • एक वस्तु-उन्मुख प्रारूप प्रदान करना जो कई प्रोग्रामिंग भाषाओं के पूर्ण कार्यान्वयन का समर्थन करता है।
  • विभिन्न भाषाओं में लिखे गए ऑब्जेक्ट्स एक दूसरे के साथ संवाद कर सकें, इसे सुनिश्चित करने के लिए नियमों को परिभाषित करना।
  • सीटीएस उन नियमों को भी परिभाषित करता है जो यह सुनिश्चित करते हैं कि विभिन्न भाषाओं में लिखे गए डेटा प्रकार के ऑब्जेक्ट एक दूसरे के साथ संवाद करने में सक्षम हैं।
  • सीटीएस, टाइप की दृश्यता और सदस्यों तक पहुंच के नियमों को भी निर्धारित करता है, अर्थात् सीटीएस, टाइप के लिए दशमा निर्धारित करने के नियमों की स्थापना करता है, और कॉमन भाषा रनटाइम दृश्यता नियमों का पालन करता है।
  • सीटीएस, टाइप वंशानुक्रम , वर्चुअल मेथड्स और ऑब्जेक्ट लाइफटाइम को नियंत्रित करने वाले नियमों को परिभाषित करता है।
  • .नेट द्वारा समर्थित भाषाएँ सभी या कुछ सामान्य डेटा टाइप को लागू कर सकती हैं।

अंशमान्य मानों को पूर्णांकित करते समय, फ्रेमवर्क के भीतर स्वतः निर्धारित रूप से हैफ़्ट-टू-इवन विधि का उपयोग किया जाता है। दूसरे संस्करण से पूर्व, "सममिति गणितीय पूर्णांकन" केवल प्रोग्रामर के विकल्प के रूप में उपलब्ध था।[1]

  • इसका उपयोग अन्य भाषाओं के साथ संवाद करने के लिए किया जाता है

टाइप श्रेणियां

सामान्य प्रकार की प्रणाली दो प्रकार की सामान्य श्रेणियों का समर्थन करती है: मूल्य प्रकार: मूल्य प्रकारों में सीधे उनका डेटा होता है, और मूल्य प्रकारों के उदाहरण या तो कॉल स्टैक पर आवंटित किए जाते हैं या संरचना में इनलाइन आवंटित किए जाते हैं। मूल्य प्रकार अंतर्निहित (रनटाइम द्वारा कार्यान्वित), उपयोगकर्ता परिभाषित, या गणना हो सकते हैं।

संदर्भ प्रकार
संदर्भ प्रकार मान के स्मृति पते के संदर्भ को संग्रहीत करते हैं, और गतिशील स्मृति आवंटन पर आवंटित किए जाते हैं। संदर्भ प्रकार स्व-वर्णन प्रकार, सूचक प्रकार या इंटरफ़ेस प्रकार हो सकते हैं। एक संदर्भ प्रकार का प्रकार स्व-वर्णन प्रकार के मूल्यों से निर्धारित किया जा सकता है। स्व-वर्णन प्रकार आगे सरणियों और वर्ग प्रकारों में विभाजित होते हैं। वर्ग प्रकार उपयोगकर्ता-परिभाषित वर्ग, बॉक्सिंग मूल्य प्रकार और प्रतिनिधि हैं।

Visual Basic .नेट में लिखा गया निम्न उदाहरण संदर्भ प्रकारों और मान प्रकारों के बीच अंतर दिखाता है:

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


यह भी देखें

संदर्भ

  1. "मिडपॉइंट राउंडिंग एन्यूमरेशन". Microsoft Docs.


बाहरी संबंध