C# संग्रह ट्यूटोरियल उदाहरणों के साथ
⚡ स्मार्ट सारांश
C# में कलेक्शंस ऑब्जेक्ट्स के समूहों को स्टोर और मैनेज करने का एक लचीला तरीका प्रदान करते हैं। एरेज़ के विपरीत, कलेक्शंस रनटाइम पर बढ़ते और घटते हैं, और System.Collections और System.Collections.Generic नेमस्पेस लिस्ट, डिक्शनरी, स्टैक और क्यू के लिए रेडीमेड टाइप प्रदान करते हैं।
हमारे पिछले ट्यूटोरियल में, हमने सीखा है कि हम C# में arrays का उपयोग कैसे कर सकते हैं। आइए इसका एक त्वरित अवलोकन करें, प्रोग्रामिंग में Arrays का उपयोग संबंधित ऑब्जेक्ट्स के एक समूह को समूहीकृत करने के लिए किया जाता है। इसलिए कोई व्यक्ति एक array या पूर्णांकों का एक सेट बना सकता है, जिसे एक चर नाम के माध्यम से एक्सेस किया जा सकता है।
C# में कलेक्शन क्या है?
संग्रह समान हैं Arrays, यह वस्तुओं के समूह के साथ काम करने का एक अधिक लचीला तरीका प्रदान करता है।
ऐरे में, आपने देखा होगा कि आपको ऐरे में तत्वों की संख्या पहले से परिभाषित करनी होगी। ऐसा ऐरे घोषित होने पर ही करना पड़ता है।
लेकिन किसी संग्रह में, आपको संग्रह का आकार पहले से परिभाषित करने की आवश्यकता नहीं है। आप किसी भी समय संग्रह से तत्व जोड़ सकते हैं या तत्व हटा भी सकते हैं। यह अध्याय इस बात पर ध्यान केंद्रित करेगा कि हम C# में उपलब्ध विभिन्न संग्रहों के साथ कैसे काम कर सकते हैं।
सिस्टम.कलेक्शन क्लासेस
.NET फ्रेमवर्क मूल गैर-जेनेरिक संग्रह वर्गों को System.Collections नेमस्पेस के अंतर्गत समूहित करता है। नीचे दी गई तालिका उन मुख्य प्रकारों का सारांश प्रस्तुत करती है जिनका आप सीधे उपयोग कर सकते हैं।
| पुस्तक संग्रह | विवरण |
| सारणी सूची | ArrayList संग्रह Arrays के समान है C# में डेटा प्रकारसबसे बड़ा अंतर सरणी सूची संग्रह की गतिशील प्रकृति है। |
| धुआँरा | स्टैक एक विशेष प्रकार का संग्रह है जो लास्ट इन फर्स्ट आउट (LIFO) अवधारणा का प्रतिनिधित्व करता है। |
| कतारों | क्यू एक विशेष प्रकार का संग्रह है जो 'पहले आओ पहले पाओ' की अवधारणा को दर्शाता है। |
| हैश तालिका | हैश टेबल एक विशेष संग्रह है जिसका उपयोग कुंजी-मान आइटमों को संग्रहीत करने के लिए किया जाता है। |
| क्रमबद्ध सूची | सॉर्टेडलिस्ट एक संग्रह है जो डिफ़ॉल्ट रूप से कुंजी के आरोही क्रम में कुंजी-मान युग्मों को संग्रहीत करता है। |
| बिटअरे | बिट ऐरे डेटा संरचना की एक ऐरे है जो बिट्स को संग्रहीत करती है। |
C# में जेनेरिक कलेक्शंस
ऊपर दी गई गैर-जेनेरिक क्लासें प्रत्येक तत्व को एक सामान्य ऑब्जेक्ट के रूप में संग्रहीत करती हैं, जिसका अर्थ है कि कंपाइलर प्रकार की जाँच नहीं कर सकता और प्रोग्राम को मानों को बॉक्सिंग करने के लिए थोड़ी लागत चुकानी पड़ती है। इस समस्या को हल करने के लिए, C# ने System.Collections.Generic नेमस्पेस जोड़ा, जहाँ प्रत्येक संग्रह एक घोषित प्रकार से जुड़ा होता है।
एक सामान्य संग्रह जैसे कि सूची यह केवल स्ट्रिंग स्वीकार करता है, इसलिए संकलन समय पर ही गलतियाँ पकड़ी जाती हैं और आइटम को वापस पढ़ते समय कास्टिंग की आवश्यकता नहीं होती है। इससे जेनेरिक संग्रह अधिक सुरक्षित, तेज़ और पढ़ने में आसान हो जाते हैं, यही कारण है कि आधुनिक C# कोड में इन्हें डिफ़ॉल्ट विकल्प के रूप में चुना जाता है।
सबसे आम जेनेरिक संग्रह नीचे सूचीबद्ध हैं:
- सूची : एक आकार परिवर्तनीय, सूचकांक-आधारित सूची, जो ऐरेलिस्ट का सामान्य विकल्प है।
- शब्दकोष : यह कुंजी-मान युग्मों को तेज़, हैश-आधारित लुकअप के साथ संग्रहीत करता है।
- हैशसेट : यह केवल अद्वितीय मानों को ही धारण करता है और यूनियन जैसे सेट ऑपरेशनों का समर्थन करता है।
- कतार : फर्स्ट इन फर्स्ट आउट कलेक्शन, क्यू का जेनेरिक वर्जन।
- ढेर : लास्ट इन फर्स्ट आउट कलेक्शन, स्टैक का जेनेरिक वर्जन।
- क्रमबद्ध सूची : कुंजी-मान युग्मों को कुंजी के अनुसार आरोही क्रम में रखता है।
C# सूची संग्रह उदाहरण
लिस्ट सबसे व्यापक रूप से उपयोग किया जाने वाला जेनेरिक कलेक्शन है क्योंकि यह एक डायनामिक ऐरे की तरह व्यवहार करता है। नीचे दिए गए उदाहरण में स्ट्रिंग्स की एक लिस्ट बनाई जाती है, उसमें आइटम जोड़े और हटाए जाते हैं, उसका आकार पढ़ा जाता है, और फिर शेष मान प्रिंट किए जाते हैं। सारा कोड Program.cs फ़ाइल में लिखा गया है।
चरण 1) System.Collections.Generic नेमस्पेस को इम्पोर्ट करें और स्ट्रिंग्स की एक लिस्ट घोषित करें।
चरण 2) Add मेथड का उपयोग करके आइटम जोड़ें और Remove मेथड का उपयोग करके आइटम हटाएं।
चरण 3) Count प्रॉपर्टी को पढ़ें, फिर foreach स्टेटमेंट का उपयोग करके सूची में लूप चलाएं।
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code स्पष्टीकरण: -
- System.Collections.Generic नेमस्पेस को इम्पोर्ट किया गया है ताकि List टाइप प्रोग्राम के लिए उपलब्ध हो सके।
- एक नई सूची ट्यूटोरियल नामक एक फ़ोल्डर बनाया जाता है, और ऐड विधि का उपयोग करके तीन नाम जोड़े जाते हैं।
- Remove विधि “ मान को हटा देती हैPythonजिससे सूची में दो आइटम शेष रह जाते हैं।
- Count प्रॉपर्टी आइटमों की संख्या लौटाती है, और foreach लूप शेष प्रत्येक मान को क्रम से प्रिंट करता है।
जब प्रोग्राम चलता है, तो यह सबसे पहले गिनती प्रिंट करता है। 2, द्वारा पीछा Java और Kotlin अलग-अलग पंक्तियों में। यह दर्शाता है कि रनटाइम पर एक संग्रह अपना आकार कैसे बदलता है, जो एक निश्चित सरणी नहीं कर सकती।
C# में एरे और कलेक्शन के बीच अंतर
दोनों एक सरणी एक समूह में संबंधित आइटम एक ही नाम के अंतर्गत रखे जाते हैं, लेकिन प्रोग्राम चलने के बाद वे अलग-अलग व्यवहार करते हैं। यह जानना कि किसका उपयोग कब करना है, आपको स्वच्छ और अधिक कुशल कोड लिखने में मदद करता है।
मुख्य अंतर नीचे सूचीबद्ध हैं:
- आकार: एक ऐरे की लंबाई घोषणा के समय ही तय हो जाती है, जबकि एक कलेक्शन किसी भी समय बढ़ या घट सकता है।
- टाइप हैंडलिंग: एक ऐरे एक ही प्रकार की वस्तु को संग्रहीत करता है, जबकि एक कलेक्शन जेनेरिक्स के साथ टाइप-सेफ हो सकता है या नॉन-जेनेरिक होने पर मिश्रित प्रकार की वस्तुओं को धारण कर सकता है।
- स्थान: एरे भाषा में अंतर्निहित होते हैं, जबकि कलेक्शन क्लास System.Collections और System.Collections.Generic नेमस्पेस में मौजूद होते हैं।
- अंतर्निर्मित क्रियाएँ: संग्रह आइटम जोड़ने, हटाने, खोजने और सॉर्ट करने के लिए तैयार तरीके प्रदान करते हैं, जबकि सरणी केवल बुनियादी अनुक्रमित पहुंच प्रदान करती है।
- सर्वोत्तम उपयोग: जब आइटमों की संख्या ज्ञात और निश्चित हो तो ऐरे चुनें, और जब प्रोग्राम चलने के दौरान संख्या बदलती रहे तो कलेक्शन चुनें।
संक्षेप में, एरे निश्चित आकार के डेटा के लिए सबसे उपयुक्त होते हैं, जबकि कलेक्शन वह लचीलापन प्रदान करते हैं जिसकी अधिकांश वास्तविक दुनिया के अनुप्रयोगों को आवश्यकता होती है।

