A tour of the C# language C# भाषा का भ्रमण
सी # (उच्चारण "तेज देखें") एक आधुनिक, वस्तु-उन्मुख और टाइप-सुरक्षित प्रोग्रामिंग भाषा है। C# डेवलपर्स को .NET में चलने वाले कई प्रकार के सुरक्षित और मजबूत एप्लिकेशन बनाने में सक्षम बनाता है। सी # की जड़ें सी भाषा परिवार में हैं और सी, सी ++, जावा और जावास्क्रिप्ट प्रोग्रामर से तुरंत परिचित होंगे। यह दौरा C# 8 और इससे पहले के भाषा के प्रमुख घटकों का एक सिंहावलोकन प्रदान करता है। यदि आप संवादात्मक उदाहरणों के माध्यम से भाषा का पता लगाना चाहते हैं, तो C# ट्यूटोरियल के परिचय का प्रयास करें।
C# एक वस्तु-उन्मुख, घटक-उन्मुख प्रोग्रामिंग भाषा है। सी # इन अवधारणाओं का सीधे समर्थन करने के लिए भाषा निर्माण प्रदान करता है, जिससे सी # एक प्राकृतिक भाषा बन जाती है जिसमें सॉफ्टवेयर घटकों को बनाना और उपयोग करना है। इसकी उत्पत्ति के बाद से, सी # ने नए वर्कलोड और उभरते सॉफ़्टवेयर डिज़ाइन प्रथाओं का समर्थन करने के लिए सुविधाओं को जोड़ा है। इसके मूल में, C# एक वस्तु-उन्मुख भाषा है। आप प्रकार और उनके व्यवहार को परिभाषित करते हैं।
कई सी # विशेषताएं मजबूत और टिकाऊ एप्लिकेशन बनाने में मदद करती हैं। कचरा संग्रह स्वचालित रूप से अप्राप्य अप्रयुक्त वस्तुओं द्वारा कब्जा की गई स्मृति को पुनः प्राप्त करता है। अशक्त प्रकार वेरिएबल्स के खिलाफ सुरक्षा करते हैं जो आवंटित वस्तुओं को संदर्भित नहीं करते हैं। अपवाद हैंडलिंग त्रुटि का पता लगाने और पुनर्प्राप्ति के लिए एक संरचित और एक्स्टेंसिबल दृष्टिकोण प्रदान करता है। लैम्ब्डा एक्सप्रेशन कार्यात्मक प्रोग्रामिंग तकनीकों का समर्थन करते हैं। लैंग्वेज इंटीग्रेटेड क्वेरी (LINQ) सिंटैक्स किसी भी स्रोत से डेटा के साथ काम करने के लिए एक सामान्य पैटर्न बनाता है। एसिंक्रोनस ऑपरेशंस के लिए भाषा समर्थन वितरित सिस्टम के निर्माण के लिए सिंटैक्स प्रदान करता है। सी # में एक एकीकृत प्रकार की प्रणाली है। सभी सी # प्रकार, जिसमें इंट और डबल जैसे आदिम प्रकार शामिल हैं, एक रूट ऑब्जेक्ट प्रकार से प्राप्त होते हैं। सभी प्रकार के सामान्य संचालन का एक सेट साझा करते हैं। किसी भी प्रकार के मूल्यों को एक सुसंगत तरीके से संग्रहीत, परिवहन और संचालित किया जा सकता है। इसके अलावा, सी # उपयोगकर्ता द्वारा परिभाषित संदर्भ प्रकार और मूल्य प्रकार दोनों का समर्थन करता है। सी # वस्तुओं के गतिशील आवंटन और हल्के ढांचे के इन-लाइन भंडारण की अनुमति देता है। सी # सामान्य तरीकों और प्रकारों का समर्थन करता है, जो बढ़ी हुई प्रकार की सुरक्षा और प्रदर्शन प्रदान करते हैं। सी # इटरेटर प्रदान करता है, जो क्लाइंट कोड के लिए कस्टम व्यवहार को परिभाषित करने के लिए संग्रह कक्षाओं के कार्यान्वयनकर्ताओं को सक्षम बनाता है।
सी # यह सुनिश्चित करने के लिए संस्करण पर जोर देता है कि कार्यक्रम और पुस्तकालय समय के साथ संगत तरीके से विकसित हो सकते हैं। सी # के डिजाइन के पहलू जो सीधे संस्करण के विचारों से प्रभावित थे, उनमें अलग वर्चुअल और ओवरराइड संशोधक, विधि अधिभार समाधान के नियम, और स्पष्ट इंटरफ़ेस सदस्य घोषणाओं के लिए समर्थन शामिल हैं।
.नेट आर्किटेक्चर
C# प्रोग्राम .NET पर चलते हैं, एक वर्चुअल एक्ज़ीक्यूशन सिस्टम जिसे कॉमन लैंग्वेज रनटाइम (CLR) कहा जाता है और क्लास लाइब्रेरी का एक सेट है। CLR Microsoft द्वारा कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर (CLI) का कार्यान्वयन है, जो एक अंतरराष्ट्रीय मानक है। सीएलआई निष्पादन और विकास वातावरण बनाने का आधार है जिसमें भाषाएं और पुस्तकालय एक साथ निर्बाध रूप से काम करते हैं।
C# में लिखा गया स्रोत कोड एक मध्यवर्ती भाषा (IL) में संकलित किया गया है जो CLI विनिर्देश के अनुरूप है। आईएल कोड और संसाधन, जैसे बिटमैप्स और स्ट्रिंग्स, एक असेंबली में संग्रहीत होते हैं, आमतौर पर .dll के विस्तार के साथ। असेंबली में एक मेनिफेस्ट होता है जो असेंबली के प्रकार, संस्करण और संस्कृति के बारे में जानकारी प्रदान करता है।
जब सी # प्रोग्राम निष्पादित किया जाता है, तो असेंबली सीएलआर में लोड हो जाती है। सीएलआर आईएल कोड को देशी मशीन निर्देशों में बदलने के लिए जस्ट-इन-टाइम (जेआईटी) संकलन करता है। सीएलआर स्वचालित कचरा संग्रहण, अपवाद प्रबंधन और संसाधन प्रबंधन से संबंधित अन्य सेवाएं प्रदान करता है। सीएलआर द्वारा निष्पादित कोड को कभी-कभी "प्रबंधित कोड" के रूप में संदर्भित किया जाता है, "अप्रबंधित कोड" के विपरीत, जिसे मूल मशीन भाषा में संकलित किया जाता है जो एक विशिष्ट प्लेटफॉर्म को लक्षित करता है।
भाषा अंतरसंचालनीयता .NET की एक प्रमुख विशेषता है। सी # कंपाइलर द्वारा निर्मित आईएल कोड सामान्य प्रकार विशिष्टता (सीटीएस) के अनुरूप है। सी # से उत्पन्न आईएल कोड कोड के साथ इंटरैक्ट कर सकता है जो एफ #, विजुअल बेसिक, सी ++, या 20 से अधिक अन्य सीटीएस-संगत भाषाओं के .NET संस्करणों से उत्पन्न हुआ था। एक एकल असेंबली में अलग-अलग .NET भाषाओं में लिखे गए कई मॉड्यूल हो सकते हैं, और प्रकार एक-दूसरे को संदर्भित कर सकते हैं जैसे कि वे एक ही भाषा में लिखे गए हों।
रन टाइम सेवाओं के अलावा, .NET में व्यापक पुस्तकालय भी शामिल हैं। ये पुस्तकालय कई अलग-अलग कार्यभार का समर्थन करते हैं। वे नामस्थानों में व्यवस्थित होते हैं जो फ़ाइल इनपुट और आउटपुट से लेकर स्ट्रिंग हेरफेर से लेकर XML पार्सिंग तक, वेब एप्लिकेशन फ्रेमवर्क से लेकर विंडोज फॉर्म नियंत्रण तक हर चीज के लिए उपयोगी कार्यक्षमता की एक विस्तृत विविधता प्रदान करते हैं। सामान्य सी# अनुप्रयोग सामान्य "नलसाजी" कार्यों को संभालने के लिए व्यापक रूप से .NET क्लास लाइब्रेरी का उपयोग करता है।
.NET के बारे में अधिक जानकारी के लिए, .NET का अवलोकन देखें।
नमस्ते दुनिया
"हैलो, वर्ल्ड" प्रोग्राम पारंपरिक रूप से प्रोग्रामिंग भाषा को पेश करने के लिए उपयोग किया जाता है। यहां यह सी # में है:
using System;
class Hello{static void Main(){Console.WriteLine("Hello, World");}}
"हैलो, वर्ल्ड" प्रोग्राम एक प्रयोग निर्देश से शुरू होता है जो सिस्टम नेमस्पेस को संदर्भित करता है। नामस्थान सी # कार्यक्रमों और पुस्तकालयों को व्यवस्थित करने का एक श्रेणीबद्ध साधन प्रदान करते हैं। नामस्थान में प्रकार और अन्य नामस्थान होते हैं—उदाहरण के लिए, सिस्टम नामस्थान में कई प्रकार होते हैं, जैसे कि प्रोग्राम में संदर्भित कंसोल वर्ग, और कई अन्य नामस्थान, जैसे IO और संग्रह। एक प्रयोग निर्देश जो किसी दिए गए नामस्थान का संदर्भ देता है, उस नामस्थान के सदस्य प्रकारों के अयोग्य उपयोग को सक्षम बनाता है। निर्देश का उपयोग करने के कारण, प्रोग्राम कंसोल का उपयोग कर सकता है। System.Console.WriteLine के लिए शॉर्टहैंड के रूप में लिखें।
"हैलो, वर्ल्ड" प्रोग्राम द्वारा घोषित हैलो क्लास में एक ही सदस्य है, मेन नाम की विधि। मुख्य विधि स्थिर संशोधक के साथ घोषित की जाती है। जबकि इंस्टेंस विधियां कीवर्ड का उपयोग करके किसी विशेष संलग्न ऑब्जेक्ट इंस्टेंस को संदर्भित कर सकती हैं, स्थिर विधियां किसी विशेष ऑब्जेक्ट के संदर्भ के बिना काम करती हैं। परंपरा के अनुसार, Main नामक एक स्थिर विधि C# प्रोग्राम के प्रवेश बिंदु के रूप में कार्य करती है।
प्रोग्राम का आउटपुट सिस्टम नेमस्पेस में कंसोल क्लास की राइटलाइन विधि द्वारा निर्मित होता है। यह वर्ग मानक वर्ग पुस्तकालयों द्वारा प्रदान किया जाता है, जो डिफ़ॉल्ट रूप से, संकलक द्वारा स्वचालित रूप से संदर्भित होते हैं।
प्रकार और चर
एक प्रकार सी # में किसी भी डेटा की संरचना और व्यवहार को परिभाषित करता है। एक प्रकार की घोषणा में इसके सदस्य, आधार प्रकार, इसे लागू करने वाले इंटरफेस और उस प्रकार के लिए अनुमत संचालन शामिल हो सकते हैं। एक चर एक लेबल है जो एक विशिष्ट प्रकार के उदाहरण को संदर्भित करता है।
C# में दो प्रकार के प्रकार होते हैं: मान प्रकार और संदर्भ प्रकार। मूल्य प्रकारों के वेरिएबल में सीधे उनका डेटा होता है। संदर्भ प्रकार के चर अपने डेटा के संदर्भों को संग्रहीत करते हैं, बाद वाले को ऑब्जेक्ट के रूप में जाना जाता है। संदर्भ प्रकारों के साथ, दो चर के लिए एक ही वस्तु को संदर्भित करना संभव है और एक चर पर संचालन के लिए दूसरे चर द्वारा संदर्भित वस्तु को प्रभावित करना संभव है। मान प्रकारों के साथ, प्रत्येक चर के पास डेटा की अपनी प्रति होती है, और एक पर संचालन के लिए दूसरे को प्रभावित करना संभव नहीं है (रेफरी और आउट पैरामीटर चर को छोड़कर)।
एक पहचानकर्ता एक चर नाम है। एक पहचानकर्ता बिना किसी सफेद जगह के यूनिकोड वर्णों का अनुक्रम है। एक पहचानकर्ता एक सी # आरक्षित शब्द हो सकता है, अगर यह @ से पहले है। एक आरक्षित शब्द का उपयोग पहचानकर्ता के रूप में करना अन्य भाषाओं के साथ बातचीत करते समय उपयोगी हो सकता है।
C# के मान प्रकारों को आगे सरल प्रकार, एनम प्रकार, संरचना प्रकार, अशक्त मान प्रकार और टपल मान प्रकारों में विभाजित किया गया है। C# के संदर्भ प्रकारों को आगे वर्ग प्रकार, इंटरफ़ेस प्रकार, सरणी प्रकार और प्रतिनिधि प्रकारों में विभाजित किया गया है।
निम्नलिखित रूपरेखा सी # के प्रकार प्रणाली का एक सिंहावलोकन प्रदान करती है।
- Simple types
- Signed integral:
sbyte
,short
,int
,long
- Unsigned integral:
byte
,ushort
,uint
,ulong
- Unicode characters:
char
, which represents a UTF-16 code unit - IEEE binary floating-point:
float
,double
- High-precision decimal floating-point:
decimal
- Boolean:
bool
, which represents Boolean values—values that are eithertrue
orfalse
- Signed integral:
- Enum types
- User-defined types of the form
enum E {...}
. Anenum
type is a distinct type with named constants. Everyenum
type has an underlying type, which must be one of the eight integral types. The set of values of anenum
type is the same as the set of values of the underlying type.
- User-defined types of the form
- Struct types
- User-defined types of the form
struct S {...}
- User-defined types of the form
- Nullable value types
- Extensions of all other value types with a
null
value
- Extensions of all other value types with a
- Tuple value types
- User-defined types of the form
(T1, T2, ...)
- User-defined types of the form
- Class types
- Ultimate base class of all other types:
object
- Unicode strings:
string
, which represents a sequence of UTF-16 code units - User-defined types of the form
class C {...}
- Ultimate base class of all other types:
- Interface types
- User-defined types of the form
interface I {...}
- User-defined types of the form
- Array types
- Single-dimensional, multi-dimensional, and jagged. For example:
int[]
,int[,]
, andint[][]
- Single-dimensional, multi-dimensional, and jagged. For example:
- Delegate types
- User-defined types of the form
delegate int D(...)
C# प्रोग्राम नए प्रकार बनाने के लिए प्रकार की घोषणाओं का उपयोग करते हैं। एक प्रकार की घोषणा नए प्रकार के नाम और सदस्यों को निर्दिष्ट करती है। C# की छह श्रेणियां उपयोगकर्ता-परिभाषित हैं: वर्ग प्रकार, संरचना प्रकार, इंटरफ़ेस प्रकार, एनम प्रकार, प्रतिनिधि प्रकार और टपल मान प्रकार।
एक वर्ग प्रकार एक डेटा संरचना को परिभाषित करता है जिसमें डेटा सदस्य (फ़ील्ड) और फ़ंक्शन सदस्य (विधियाँ, गुण और अन्य) होते हैं। वर्ग प्रकार एकल वंशानुक्रम और बहुरूपता का समर्थन करते हैं, तंत्र जिससे व्युत्पन्न वर्ग आधार वर्गों का विस्तार और विशेषज्ञ कर सकते हैं।
एक संरचना प्रकार एक वर्ग प्रकार के समान होता है जिसमें यह डेटा सदस्यों और फ़ंक्शन सदस्यों के साथ एक संरचना का प्रतिनिधित्व करता है। हालांकि, कक्षाओं के विपरीत, संरचनाएं मूल्य प्रकार हैं और आमतौर पर ढेर आवंटन की आवश्यकता नहीं होती है। संरचना प्रकार उपयोगकर्ता द्वारा निर्दिष्ट विरासत का समर्थन नहीं करते हैं, और सभी प्रकार की संरचना प्रकार वस्तु से निहित रूप से प्राप्त होती है।
एक इंटरफ़ेस प्रकार एक अनुबंध को सार्वजनिक सदस्यों के नामित सेट के रूप में परिभाषित करता है। इंटरफ़ेस को लागू करने वाले वर्ग या संरचना को इंटरफ़ेस के सदस्यों के कार्यान्वयन प्रदान करना चाहिए। एक इंटरफ़ेस कई बेस इंटरफेस से विरासत में मिल सकता है, और एक वर्ग या संरचना कई इंटरफेस को लागू कर सकती है।
एक प्रतिनिधि प्रकार एक विशेष पैरामीटर सूची और वापसी प्रकार के साथ विधियों के संदर्भों का प्रतिनिधित्व करता है। प्रतिनिधि विधियों को ऐसी संस्थाओं के रूप में व्यवहार करना संभव बनाते हैं जिन्हें चरों को सौंपा जा सकता है और पैरामीटर के रूप में पारित किया जा सकता है। प्रतिनिधि कार्यात्मक भाषाओं द्वारा प्रदान किए गए कार्य प्रकारों के अनुरूप होते हैं। वे कुछ अन्य भाषाओं में पाए जाने वाले फ़ंक्शन पॉइंटर्स की अवधारणा के समान हैं। फ़ंक्शन पॉइंटर्स के विपरीत, प्रतिनिधि ऑब्जेक्ट-ओरिएंटेड और टाइप-सुरक्षित होते हैं।
वर्ग, संरचना, इंटरफ़ेस और प्रतिनिधि प्रकार सभी जेनरिक का समर्थन करते हैं, जिससे उन्हें अन्य प्रकारों के साथ पैरामीटर किया जा सकता है।
सी # किसी भी प्रकार के एकल-आयामी और बहु-आयामी सरणी का समर्थन करता है। ऊपर सूचीबद्ध प्रकारों के विपरीत, सरणी प्रकारों का उपयोग करने से पहले उन्हें घोषित करने की आवश्यकता नहीं है। इसके बजाय, वर्ग कोष्ठक के साथ एक प्रकार के नाम का अनुसरण करके सरणी प्रकारों का निर्माण किया जाता है। उदाहरण के लिए, int[] int का एकल-आयामी सरणी है, int[,] int का द्वि-आयामी सरणी है, और int[][] एकल-आयामी सरणियों का एकल-आयामी सरणी है, या "दांतेदार" "सरणी, int.
अशक्त प्रकारों को एक अलग परिभाषा की आवश्यकता नहीं होती है। प्रत्येक गैर-शून्य प्रकार टी के लिए, एक संबंधित शून्य प्रकार टी है?, जो अतिरिक्त मान रख सकता है, शून्य। उदाहरण के लिए, इंट? एक प्रकार है जो किसी भी 32-बिट पूर्णांक या मान शून्य, और स्ट्रिंग को पकड़ सकता है? एक प्रकार है जो किसी भी स्ट्रिंग या मान को शून्य रख सकता है।
C# का टाइप सिस्टम इस तरह एकीकृत है कि किसी भी प्रकार के मान को एक वस्तु के रूप में माना जा सकता है। सी # में प्रत्येक प्रकार प्रत्यक्ष या परोक्ष रूप से ऑब्जेक्ट क्लास प्रकार से प्राप्त होता है, और ऑब्जेक्ट सभी प्रकार का अंतिम आधार वर्ग होता है। संदर्भ प्रकारों के मानों को केवल ऑब्जेक्ट के रूप में मानों को देखने के द्वारा ऑब्जेक्ट के रूप में माना जाता है। मूल्य प्रकारों के मूल्यों को बॉक्सिंग और अनबॉक्सिंग ऑपरेशन करके ऑब्जेक्ट के रूप में माना जाता है। निम्नलिखित उदाहरण में, एक int मान को ऑब्जेक्ट में और फिर से int में कनवर्ट किया जाता है।
C#
int i = 123; object o = i; // Boxing int j = (int)o; // Unboxing
जब किसी ऑब्जेक्ट संदर्भ को मान प्रकार का मान असाइन किया जाता है, तो मान रखने के लिए एक "बॉक्स" आवंटित किया जाता है। वह बॉक्स संदर्भ प्रकार का एक उदाहरण है, और मान उस बॉक्स में कॉपी किया जाता है। इसके विपरीत, जब किसी ऑब्जेक्ट संदर्भ को किसी मान प्रकार में डाला जाता है, तो एक जांच की जाती है कि संदर्भित ऑब्जेक्ट सही मान प्रकार का एक बॉक्स है। यदि चेक सफल होता है, तो बॉक्स में मान को मान प्रकार में कॉपी किया जाता है।
सी # की एकीकृत प्रकार प्रणाली का प्रभावी ढंग से अर्थ है कि मूल्य प्रकारों को "मांग पर" वस्तु संदर्भ के रूप में माना जाता है। एकीकरण के कारण, सामान्य-उद्देश्य वाले पुस्तकालय जो प्रकार की वस्तु का उपयोग करते हैं, उन सभी प्रकारों के साथ उपयोग किया जा सकता है जो वस्तु से प्राप्त होते हैं, जिसमें संदर्भ प्रकार और मूल्य प्रकार दोनों शामिल हैं।
C# में कई प्रकार के चर हैं, जिनमें फ़ील्ड, सरणी तत्व, स्थानीय चर और पैरामीटर शामिल हैं। चर भंडारण स्थानों का प्रतिनिधित्व करते हैं। प्रत्येक चर का एक प्रकार होता है जो यह निर्धारित करता है कि चर में कौन से मान संग्रहीत किए जा सकते हैं, जैसा कि नीचे दिखाया गया है।
- Non-nullable value type
- A value of that exact type
- Nullable value type
- A
null
value or a value of that exact type
- A
- object
- A
null
reference, a reference to an object of any reference type, or a reference to a boxed value of any value type
- A
- Class type
- A
null
reference, a reference to an instance of that class type, or a reference to an instance of a class derived from that class type
- A
- Interface type
- A
null
reference, a reference to an instance of a class type that implements that interface type, or a reference to a boxed value of a value type that implements that interface type
- A
- Array type
- A
null
reference, a reference to an instance of that array type, or a reference to an instance of a compatible array type
- A
- Delegate type
- A
null
reference or a reference to an instance of a compatible delegate type
C#
using System; namespace Acme.Collections { public class Stack<T> { Entry _top; public void Push(T data) { _top = new Entry(_top, data); } public T Pop() { if (_top == null) { throw new InvalidOperationException(); } T result = _top.Data; _top = _top.Next; return result; } class Entry { public Entry Next { get; set; } public T Data { get; set; } public Entry(Entry next, T data) { Next = next; Data = data; } } } }
इस वर्ग का पूर्णतः योग्य नाम Acme.Collections.Stack है। वर्ग में कई सदस्य होते हैं: शीर्ष नाम का एक क्षेत्र, पुश और पॉप नामक दो विधियाँ, और एक नेस्टेड वर्ग जिसका नाम एंट्री है। एंट्री क्लास में आगे तीन सदस्य होते हैं: एक फ़ील्ड जिसका नाम अगला है, एक फ़ील्ड जिसका नाम डेटा है, और एक कंस्ट्रक्टर। स्टैक एक सामान्य वर्ग है। इसका एक प्रकार का पैरामीटर है, T जिसे उपयोग किए जाने पर एक ठोस प्रकार से बदल दिया जाता है।
स्टैक एक "फर्स्ट इन - लास्ट आउट" (FILO) संग्रह है। स्टैक के शीर्ष पर नए तत्व जोड़े जाते हैं। जब कोई तत्व हटा दिया जाता है, तो उसे स्टैक के शीर्ष से हटा दिया जाता है। पिछला उदाहरण स्टैक प्रकार की घोषणा करता है जो स्टैक के लिए भंडारण और व्यवहार को परिभाषित करता है। आप एक वैरिएबल घोषित कर सकते हैं जो उस कार्यक्षमता का उपयोग करने के लिए स्टैक प्रकार के उदाहरण को संदर्भित करता है।
असेंबली में इंटरमीडिएट लैंग्वेज (IL) निर्देशों के रूप में निष्पादन योग्य कोड और मेटाडेटा के रूप में प्रतीकात्मक जानकारी होती है। इसे निष्पादित करने से पहले, .NET कॉमन लैंग्वेज रनटाइम का जस्ट-इन-टाइम (JIT) कंपाइलर आईएल कोड को असेंबली में प्रोसेसर-विशिष्ट कोड में परिवर्तित करता है।
क्योंकि असेंबली कोड और मेटाडेटा दोनों वाली कार्यक्षमता की एक स्व-वर्णन इकाई है, इसलिए C# में #include निर्देश और शीर्षलेख फ़ाइलों की कोई आवश्यकता नहीं है। किसी विशेष असेंबली में निहित सार्वजनिक प्रकार और सदस्यों को प्रोग्राम को संकलित करते समय उस असेंबली को संदर्भित करके सी # प्रोग्राम में उपलब्ध कराया जाता है। उदाहरण के लिए, यह प्रोग्राम acme.dll असेंबली से Acme.Collections.Stack वर्ग का उपयोग करता है:
C#
using System; using Acme.Collections; class Example { public static void Main() { var s = new Stack<int>(); s.Push(1); // stack contains 1 s.Push(10); // stack contains 1, 10 s.Push(100); // stack contains 1, 10, 100 Console.WriteLine(s.Pop()); // stack contains 1, 10 Console.WriteLine(s.Pop()); // stack contains 1 Console.WriteLine(s.Pop()); // stack is empty }
}
इस प्रोग्राम को संकलित करने के लिए, आपको पिछले उदाहरण में परिभाषित स्टैक क्लास वाली असेंबली को संदर्भित करने की आवश्यकता होगी।
C# प्रोग्राम को कई सोर्स फाइल्स में स्टोर किया जा सकता है। जब एक सी # प्रोग्राम संकलित किया जाता है, तो सभी स्रोत फाइलों को एक साथ संसाधित किया जाता है, और स्रोत फाइलें एक दूसरे को स्वतंत्र रूप से संदर्भित कर सकती हैं। संकल्पनात्मक रूप से, यह ऐसा है जैसे संसाधित होने से पहले सभी स्रोत फ़ाइलों को एक बड़ी फ़ाइल में संयोजित किया गया था। सी # में आगे की घोषणाओं की कभी आवश्यकता नहीं होती है, क्योंकि कुछ अपवादों के साथ, घोषणा आदेश महत्वहीन है। सी # स्रोत फ़ाइल को केवल एक सार्वजनिक प्रकार घोषित करने के लिए सीमित नहीं करता है और न ही स्रोत फ़ाइल में घोषित प्रकार से मेल खाने के लिए स्रोत फ़ाइल के नाम की आवश्यकता होती है।
इस दौरे में आगे के लेख इन संगठनात्मक ब्लॉकों की व्याख्या करते हैं।
Comments
Post a Comment