البرنامج التعليمي لـ C# Array: الإنشاء والإعلان والتهيئة
⚡ ملخص ذكي
تُخزّن المصفوفات في لغة C# مجموعة ثابتة الحجم من العناصر التي تشترك في نفس نوع البيانات تحت اسم متغير واحد. يوجد كل عنصر في فهرس يبدأ من الصفر، مما يجعل عملية تعريف القيم وتهيئتها والوصول إليها سريعة ويمكن التنبؤ بها.

ما هي المصفوفات في C#؟
يتم استخدام المصفوفة لتخزين مجموعة أو سلسلة من العناصر. وستكون هذه العناصر من نفس النوع.
على سبيل المثال، إذا كان لديك مصفوفة من القيم الصحيحة، فقد تكون المصفوفة عبارة عن مجموعة من القيم مثل [1، 2، 3، 4]. هنا عدد العناصر في المصفوفة هو 4.
تكون المصفوفات مفيدة عندما تريد تخزين مجموعة من القيم من نفس النوع. لذلك بدلاً من إعلان أ متغير لكل عنصر، يمكنك فقط إعلان متغير واحد.
سيشير هذا المتغير إلى مصفوفة أو قائمة عناصر، والتي ستكون مسؤولة عن تخزين عناصر المصفوفة.
دعونا نلقي نظرة على كيفية العمل مع المصفوفات في لغة C#. في مثالنا، سنعلن عن مجموعة من الأعداد الصحيحة ونعمل معها وفقًا لذلك.
لاحظ أنه يتم تنفيذ كافة التعليمات البرمجية أدناه إلى ملف Program.cs.
الخطوة 1) الإعلان عن مصفوفة – الخطوة الأولى هي الإعلان عن مصفوفة. دعونا نرى كيف يمكننا تحقيق ذلك من خلال المثال الكودي أدناه.
Code تفسير:-
- الجزء الأول هو نوع البيانات. يحدد نوع العناصر المستخدمة في المصفوفة. لذا، في حالتنا، نقوم بإنشاء مجموعة من الأعداد الصحيحة.
- الجزء الثاني [ ] والذي يحدد رتبة المصفوفة. (الرتبة عبارة عن عنصر نائب يحدد عدد العناصر التي سيحتوي عليها المصفوفة)
- التالي هو اسم المصفوفة والتي في حالتنا هي "القيم". لاحظ أنك ترى خطًا أخضر متعرجًا تحته، فلا تقلق بشأن ذلك. هذا مجرد .Net يقول أنك قمت بتعريف مصفوفة، لكنك لا تستخدمها في أي مكان.
الخطوة 2) الخطوة التالية هي تهيئة المصفوفة. سنقوم هنا بتحديد عدد القيم التي ستحتفظ بها المصفوفة. سنقوم أيضًا بتعيين قيم لكل عنصر في المصفوفة.
Code تفسير:-
- أولاً، نقوم بتعيين عدد العناصر التي سيحتويها المصفوفة إلى 3. لذا، بين الأقواس المربعة، نقول إن المصفوفة ستحتوي على 3 عناصر.
- ثم نقوم بتعيين قيم لكل عنصر من عناصر المصفوفة. يمكننا فعل ذلك بتحديد اسم المتغير متبوعًا بموقعه في المصفوفة. لذا، فإن values[0] تعني أننا نخزن قيمة في الموضع الأول من المصفوفة. وبالمثل، للوصول إلى الموضع الثاني، نستخدم الصيغة values[1] وهكذا.
ملاحظات: – في المصفوفات، يبدأ موضع الفهرس من 0.
الخطوة 3) دعونا الآن نعرض العناصر الفردية للمصفوفة في وحدة التحكم. دعونا نضيف الكود أدناه لتحقيق ذلك.
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# باستخدام حلقة 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(); } } }
تحتوي المصفوفة هنا على صفين وعمودين. تُرجع الدالة matrix[0, 0] القيمة 1، بينما تُرجع الدالة matrix[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. ولأن كل صف عبارة عن مصفوفة منفصلة، فإن المصفوفات المتعرجة تستخدم الذاكرة بكفاءة عندما تختلف أطوال الصفوف، على الرغم من أنها تحتاج إلى خطوة إضافية لتهيئة كل مصفوفة داخلية.




