C# ऐरे ट्यूटोरियल: बनाएं, घोषित करें, आरंभ करें

⚡ स्मार्ट सारांश

C# में, एक ही वेरिएबल नाम के अंतर्गत समान डेटा प्रकार वाले तत्वों का एक निश्चित आकार का संग्रह संग्रहीत होता है। प्रत्येक तत्व शून्य-आधारित इंडेक्स पर स्थित होता है, इसलिए मानों को घोषित करना, आरंभ करना और उन तक पहुंचना तेज़ और अनुमानित रहता है।

  • 📌 परिभाषा: एक ऐरे में एक ही प्रकार के कई मान अनुक्रमित स्थानों पर रखे जाते हैं, जिन तक एक ही चर के माध्यम से पहुँचा जा सकता है।
  • घोषणा: एक डेटा प्रकार, उसके बाद वर्ग कोष्ठक और एक नाम, एक सरणी घोषित करता है, उदाहरण के लिए Int32[] मान।
  • 🔢 आरंभ: नया कीवर्ड आकार निर्धारित करता है, फिर प्रत्येक इंडेक्स को मान प्राप्त होता है जैसे कि values[0]=1.
  • 🔍 प्रवेश: जीरो-बेस्ड इंडेक्सिंग किसी भी एलिमेंट को पढ़ या लिख ​​सकती है, इसलिए पहला आइटम values[0] है और गिनती 0 से शुरू होती है।
  • 🔁 पुनरावृत्ति: एक foreach लूप बिना इंडेक्स वाले प्रत्येक तत्व को स्कैन करता है, जिससे बड़े एरे में आउट-ऑफ-रेंज त्रुटियों से बचा जा सकता है।
  • 🤖 एआई सहायता: GitHub Copilot ऐरे बॉयलरप्लेट उत्पन्न करता है, जबकि ML.NET मशीन लर्निंग मॉडल के लिए सुविधाओं के रूप में संख्यात्मक ऐरे लोड करता है।

C# सरणियाँ

C# में Arrays क्या है?

ऐरे का उपयोग तत्वों के संग्रह या श्रृंखला को संग्रहीत करने के लिए किया जाता है। ये तत्व एक ही प्रकार के होंगे।

उदाहरण के लिए, यदि आपके पास पूर्णांक मानों की एक सरणी है, तो सरणी [1, 2, 3, 4] जैसे मानों का संग्रह हो सकती है। यहाँ सरणी में तत्वों की संख्या 4 है।

जब आप एक ही प्रकार के मानों का संग्रह संग्रहीत करना चाहते हैं तो ऐरे उपयोगी होते हैं। इसलिए किसी को घोषित करने के बजाय परिवर्तनशील प्रत्येक तत्व के लिए, आप केवल एक चर घोषित कर सकते हैं।

यह चर एक सारणी या तत्वों की सूची की ओर संकेत करेगा, जो सारणी के तत्वों को संग्रहीत करने के लिए जिम्मेदार होगा।

आइए देखें कि हम C# में arrays के साथ कैसे काम कर सकते हैं। हमारे उदाहरण में, हम पूर्णांकों की एक array घोषित करेंगे और उसके अनुसार उनके साथ काम करेंगे।

ध्यान दें कि नीचे दिया गया सारा कोड Program.cs फ़ाइल में बनाया जा रहा है।

चरण 1) एक सरणी घोषित करना - पहला कदम एक सरणी घोषित करना है। आइए देखें कि हम नीचे दिए गए कोड उदाहरण से इसे कैसे प्राप्त कर सकते हैं।

C# में सारणी

Code स्पष्टीकरण: -

  1. पहला भाग है डाटा प्रकारयह सरणी में उपयोग किए जाने वाले तत्वों के प्रकार को निर्दिष्ट करता है। इसलिए हमारे मामले में, हम पूर्णांकों की एक सरणी बना रहे हैं।
  2. दूसरा भाग [ ], जो सरणी की रैंक निर्दिष्ट करता है। (रैंक एक प्लेसहोल्डर है जो सरणी में शामिल तत्वों की संख्या निर्दिष्ट करता है)
  3. अगला नाम है सरणी का, जो हमारे मामले में 'values' है। ध्यान दें कि आपको एक हरे रंग की टेढ़ी-मेढ़ी रेखा दिखाई देती है, इसकी चिंता न करें। यह सिर्फ़ .Net कह रहा है कि आपने एक सरणी घोषित की है, लेकिन उसका कहीं भी उपयोग नहीं कर रहे हैं।

चरण 2) अगला चरण सरणी को आरंभीकृत करना है। यहाँ हम सरणी में रखे जाने वाले मानों की संख्या निर्दिष्ट करने जा रहे हैं। हम सरणी के प्रत्येक तत्व को मान भी निर्दिष्ट करने जा रहे हैं।

C# में सारणी

Code स्पष्टीकरण: -

  1. सबसे पहले, हम सारणी में रखे जाने वाले तत्वों की संख्या 3 निर्धारित कर रहे हैं। अतः वर्गाकार कोष्ठकों में हम कह रहे हैं कि सारणी में 3 तत्व रखे जाएंगे।
  2. फिर हम ऐरे के प्रत्येक तत्व को मान निर्दिष्ट करते हैं। हम ऐसा वेरिएबल का नाम और ऐरे में इंडेक्स की स्थिति बताकर कर सकते हैं। जैसे values[0] का अर्थ है कि हम ऐरे की पहली स्थिति में एक मान संग्रहित कर रहे हैं। इसी प्रकार दूसरी स्थिति को एक्सेस करने के लिए हम values[1] का उपयोग करते हैं, और इसी तरह आगे भी।

नोट: - Arrays में, सूचकांक स्थिति 0 से शुरू होती है।

चरण 3) अब कंसोल में ऐरे के अलग-अलग तत्वों को प्रदर्शित करें। इसे प्राप्त करने के लिए नीचे दिया गया कोड जोड़ें।

C# में सारणी

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code स्पष्टीकरण: -

यह सरल भाग है जिसमें हम तत्व के प्रत्येक मान को कंसोल पर भेजने के लिए Console.WriteLine विधि का उपयोग करते हैं।

ध्यान दें कि हम प्रत्येक तत्व तक सूचकांक स्थिति के साथ सरणी चर नाम की सहायता से पहुंच रहे हैं।

यदि उपरोक्त कोड ठीक से दर्ज किया गया है और प्रोग्राम निष्पादित किया गया है, तो निम्नलिखित आउटपुट प्रदर्शित होगा।

आउटपुट:

C# में सारणी

आउटपुट से, आप कंसोल में प्रदर्शित हो रहे ऐरे के सभी मान देख सकते हैं।

C# में foreach लूप का उपयोग करके ऐरे में लूप कैसे चलाएं

प्रत्येक तत्व को उसके इंडेक्स द्वारा पढ़ना कारगर तो है, लेकिन जब किसी ऐरे में कई मान हों तो यह थकाऊ हो जाता है। foreach लूप ऐरे के प्रत्येक तत्व को क्रम से देखने का एक आसान और सुव्यवस्थित तरीका प्रदान करता है। tracआप स्वयं एक इंडेक्स वेरिएबल बना सकते हैं।

foreach स्टेटमेंट एरे से प्रत्येक आइटम को एक-एक करके लेता है और उसे लूप वेरिएबल में कॉपी करता है। फिर आप उस वेरिएबल का उपयोग लूप बॉडी के अंदर करते हैं। चूंकि लूप अंतिम एलिमेंट पर स्वचालित रूप से रुक जाता है, इसलिए foreach एरे के अंत से आगे पढ़ने के जोखिम को खत्म कर देता है।

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

ऊपर दिए गए उदाहरण में तीन पूर्णांकों का एक ऐरे घोषित और आरंभ किया गया है, फिर foreach लूप का उपयोग करके उस पर कार्रवाई की गई है। प्रत्येक कार्रवाई में चर मद अगला मान प्राप्त होता है, और Console.WriteLine उसे प्रिंट करता है। आउटपुट में 1, 2 और 3 संख्याएँ अलग-अलग पंक्तियों में दिखाई देती हैं।

एरे के साथ foreach फ़ंक्शन का उपयोग करते समय याद रखने योग्य मुख्य बिंदु:

  • लूप वेरिएबल रीड-ओनली होता है, इसलिए foreach लूप का उपयोग मानों को पढ़ने के लिए सबसे अच्छा होता है, न कि उन्हें यथास्थान बदलने के लिए।
  • लुक करते समय तत्वों को संशोधित करने के लिएpingइसके बजाय, इंडेक्स के साथ फॉर लूप का उपयोग करें।
  • foreach फ़ंक्शन एकल-आयामी सरणियों, बहुआयामी सरणियों और पुनरावृति का समर्थन करने वाले किसी भी संग्रह के साथ काम करता है।

C# बहुआयामी सरणियाँ

अब तक दिखाए गए सभी एरे एकल-आयामी हैं, यानी उनमें मानों की एक साधारण सूची संग्रहित होती है। C# बहुआयामी एरे का भी समर्थन करता है, जिनमें तत्वों को पंक्तियों और स्तंभों के ग्रिड में व्यवस्थित किया जाता है। द्वि-आयामी एरे सबसे सामान्य रूप है और मैट्रिक्स, गेम बोर्ड और तालिकाओं जैसे डेटा के लिए उपयुक्त है।

वर्ग कोष्ठक के अंदर अल्पविराम लगाकर आप एक द्वि-आयामी सरणी घोषित करते हैं। प्रत्येक अतिरिक्त अल्पविराम एक और आयाम जोड़ता है, इसलिए int[,] द्वि-आयामी है और int[,,] त्रि-आयामी है। फिर प्रत्येक आयाम के लिए एक सूचकांक के साथ तत्वों तक पहुँचा जाता है।

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

यहां मैट्रिक्स ऐरे में दो पंक्तियाँ और दो स्तंभ हैं। मैट्रिक्स[0, 0] तत्व 1 लौटाता है, और मैट्रिक्स[1, 1] 4 लौटाता है। ऐरे की घोषणा के समय आयामों की संख्या निश्चित होती है, जबकि प्रत्येक आयाम का आकार ऐरे बनाते समय निर्धारित किया जाता है।

C# जैग्ड एरेज़

जैग्ड ऐरे एक ऐसा ऐरे है जिसके तत्व स्वयं ऐरे होते हैं। आयताकार बहुआयामी ऐरे के विपरीत, प्रत्येक आंतरिक ऐरे की लंबाई भिन्न हो सकती है, यही कारण है कि जैग्ड ऐरे को अक्सर ऐरे-ऑफ-ऐरे कहा जाता है। यह लचीलापन तब उपयोगी होता है जब पंक्तियों में स्वाभाविक रूप से अलग-अलग संख्या में मान होते हैं।

आप दो वर्गाकार कोष्ठकों का उपयोग करके एक जैग्ड ऐरे घोषित करते हैं, फिर प्रत्येक आंतरिक ऐरे को अलग-अलग बनाते हैं। निम्नलिखित उदाहरण एक जैग्ड ऐरे बनाता है जिसमें पहली पंक्ति में तीन मान और दूसरी पंक्ति में दो मान होते हैं।

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

एक्सप्रेशन jagged[0][2] पहली पंक्ति के तीसरे तत्व, यानी 3 को पढ़ता है, और jagged[1][1] दूसरी पंक्ति के दूसरे तत्व, यानी 5 को पढ़ता है। चूंकि प्रत्येक पंक्ति एक अलग ऐरे है, इसलिए पंक्ति की लंबाई भिन्न होने पर भी जैग्ड ऐरे मेमोरी का कुशलतापूर्वक उपयोग करते हैं, हालांकि प्रत्येक आंतरिक ऐरे को इनिशियलाइज़ करने के लिए एक अतिरिक्त चरण की आवश्यकता होती है।

अक्सर पूछे जाने वाले प्रश्न

Length प्रॉपर्टी C# ऐरे में मौजूद सभी तत्वों की कुल संख्या बताती है। उदाहरण के लिए, तीन तत्वों वाले ऐरे के लिए values.Length का मान 3 होता है। बहुआयामी ऐरे के लिए, GetLength(dimension) प्रत्येक आयाम का आकार बताता है।

AC# ऐरे का आकार बनाते समय ही तय हो जाता है, जबकि लिस्ट का आकार गतिशील रूप से बढ़ता और घटता रहता है। निश्चित डेटा के लिए ऐरे तेज़ होते हैं और उनमें ओवरहेड कम होता है, जबकि लिस्ट उन संग्रहों के लिए उपयुक्त होती है जिनके तत्वों की संख्या रनटाइम पर बदलती रहती है।

एक मानक C# ऐरे में केवल एक घोषित प्रकार के तत्व संग्रहित होते हैं, इसलिए विभिन्न प्रकारों को मिलाना अनुमत नहीं है। विभिन्न प्रकारों को संग्रहित करने के लिए, object[] ऐरे घोषित करें या ArrayList जैसे संग्रह का उपयोग करें, हालांकि दोनों ही कंपाइल-टाइम टाइप सुरक्षा से समझौता करते हैं।

स्टैटिक Array.Sort मेथड C# ऐरे के तत्वों को आरोही क्रम में व्यवस्थित करता है। ऐरे को Array.Sort(values) में पास करें और Array का उपयोग करें।Reverse इसके बाद अवरोही क्रम में सॉर्टिंग की जाती है। सॉर्टिंग संख्याओं, स्ट्रिंग्स और अन्य तुलनीय प्रकारों पर काम करती है।

Array.Copy एक ऐरे से तत्वों की एक श्रेणी को दूसरे ऐरे में डुप्लिकेट करता है, जबकि Clone विधि पूरे ऐरे की शैलो कॉपी बनाती है। एक ऐरे वेरिएबल को दूसरे में असाइन करने से केवल संदर्भ कॉपी होता है, अंतर्निहित तत्व नहीं।

IndexOutOfRangeException तब उत्पन्न होता है जब कोड किसी ऐसी ऐरे पोजीशन को एक्सेस करता है जो मौजूद नहीं होती, जैसे कि तीन-तत्व वाले ऐरे में values[5]। क्योंकि C# ऐरे शून्य-आधारित होते हैं, इसलिए मान्य इंडेक्स 0 से लेकर Length में से एक कम तक होते हैं। हमेशा पहले इंडेक्स को सत्यापित करें।

हाँ। GitHub Copilot Visual Studio के अंदर किसी टिप्पणी या विधि नाम से सरणी घोषणा, आरंभीकरण और लूप तर्क का सुझाव देता है। VS Code. Revसही आकार और सूचकांक सीमाओं के लिए प्रत्येक सुझाव की समीक्षा करें, क्योंकि कोपायलट एक-बाय-वन और सीमा से बाहर की त्रुटियां उत्पन्न कर सकता है।

ML.NET फीचर वैक्टर और मॉडल इनपुट को C# एरे के रूप में दर्शाता है, आमतौर पर float[] एरे के रूप में। प्रशिक्षण डेटा एरे या स्पैन में लोड होता है, और भविष्यवाणियां स्कोर के एरे लौटाती हैं। एरे का निश्चित आकार और तेज़ इंडेक्सिंग उन्हें मशीन लर्निंग पाइपलाइन के लिए कुशल बनाती है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: