البرنامج التعليمي لـ C# ArrayList مع أمثلة
⚡ ملخص ذكي
ArrayList في لغة C# عبارة عن مجموعة ديناميكية من مساحة اسم System.Collections تخزن العناصر ككائنات. على عكس المصفوفة، فإنها تتوسع وتتقلص أثناء التشغيل ويمكنها استيعاب الأعداد الصحيحة والسلاسل النصية والقيم المنطقية معًا في قائمة واحدة.

ما هو ArrayList في C #؟
مجموعة ArrayList تشبه إلى المصفوفات نوع البيانات في C#. الاختلاف الأكبر هو الطبيعة الديناميكية لمجموعة قائمة المصفوفة.
بالنسبة للمصفوفات، تحتاج إلى تحديد عدد العناصر التي يمكن للمصفوفة أن تحتوي عليها في وقت إعلان المصفوفة. ولكن في حالة مجموعة Array List، لا يلزم القيام بذلك مسبقًا. يمكن إضافة عناصر أو إزالتها من مجموعة Array List في أي وقت. دعنا نلقي نظرة على العمليات المتاحة لمجموعة Array List بمزيد من التفصيل.
إعلان قائمة المصفوفة
يتم توفير إعلان ArrayList أدناه. يتم إنشاء قائمة مصفوفة بمساعدة نوع بيانات ArrayList. يتم استخدام الكلمة الأساسية "جديدة" لإنشاء كائن من قائمة ArrayList. ثم يتم تعيين الكائن إلى المتغير a1. والآن سيتم استخدام المتغير a1 للوصول إلى العناصر المختلفة لقائمة المصفوفات.
ArrayList a1 = new ArrayList()
إضافة عناصر إلى المصفوفة
يتم استخدام طريقة الإضافة لإضافة عنصر إلى ArrayList. يمكن استخدام طريقة الإضافة لإضافة أي نوع من عناصر نوع البيانات إلى قائمة المصفوفات. لذا يمكنك إضافة عدد صحيح، أو سلسلة، أو حتى قيمة منطقية إلى قائمة المصفوفات. ويرد أدناه بناء الجملة العام لطريقة الإضافة
ArrayList.add(element)
فيما يلي بعض الأمثلة لكيفية استخدام طريقة "الإضافة". يمكن استخدام طريقة الإضافة لإضافة أنواع بيانات مختلفة إلى مجموعة قائمة المصفوفات.
يمكنك أدناه رؤية أمثلة لكيفية إضافة سلاسل Integer وحتى القيم المنطقية إلى مجموعة Array List.
- a1.add(1) - سيؤدي هذا إلى إضافة قيمة عددية إلى المجموعة
- a1.add("مثال") - سيؤدي هذا إلى إضافة قيمة سلسلة إلى المجموعة
- a1.add(true) - سيؤدي هذا إلى إضافة قيمة منطقية إلى المجموعة
الآن دعونا نرى هذا يعمل على مستوى الكود. ستتم كتابة كافة التعليمات البرمجية المذكورة أدناه إلى تطبيق وحدة التحكم لدينا. ستتم كتابة الكود في ملف Program.cs الخاص بنا.
في البرنامج أدناه، سنكتب الكود لإنشاء قائمة مصفوفات جديدة. سنعرض أيضًا كيفية إضافة عناصر وعرض عناصر قائمة المصفوفات.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { ArrayList a1 = new ArrayList(); a1.Add(1); a1.Add("Example"); a1.Add(true); Console.WriteLine(a1[0]); Console.WriteLine(a1[1]); Console.WriteLine(a1[2]); Console.ReadKey(); } } }
Code تفسير:-
- يتم استخدام الخطوة الأولى للإعلان عن قائمة المصفوفات الخاصة بنا. نعلن هنا عن a1 كمتغير للاحتفاظ بعناصر قائمة المصفوفات الخاصة بنا.
- نستخدم بعد ذلك الكلمة الأساسية add لإضافة الرقم 1 والسلسلة "مثال" والقيمة المنطقية "صحيح" إلى قائمة المصفوفات.
- نستخدم بعد ذلك طريقة Console.WriteLine لعرض قيمة كل عنصر يسرد المصفوفة على وحدة التحكم. ستلاحظ أنه تمامًا مثل المصفوفات، يمكننا الوصول إلى العناصر عبر مواضع الفهرس الخاصة بها. لذا، للوصول إلى الموضع الأول في قائمة المصفوفات، نستخدم موضع الفهرس [0]. وهلم جرا وهكذا دواليك.
إذا تم إدخال الكود أعلاه بشكل صحيح وتم تشغيل البرنامج، فسيتم عرض الإخراج التالي.
الإخراج:
من الإخراج، يمكنك أن ترى أن كافة العناصر من قائمة المصفوفة يتم إرسالها إلى وحدة التحكم.
دعونا نلقي نظرة على بعض الطرق الإضافية المتوفرة كجزء من ArrayList.
العد التنازلي
يتم استخدام هذه الطريقة للحصول على عدد العناصر الموجودة في مجموعة ArrayList. وفيما يلي بناء الجملة العام لهذا البيان.
ArrayList.Count() - ستعيد هذه الطريقة عدد العناصر التي تحتوي عليها قائمة المصفوفة.
يحتوي
يتم استخدام هذه الطريقة لمعرفة ما إذا كان هناك عنصر موجود في مجموعة ArrayList. وفيما يلي بناء الجملة العام لهذا البيان
ArrayList.Contains(element) – ستُرجع هذه الطريقة صحيحًا إذا كان العنصر موجودًا في القائمة، وإلا فإنها ستعيد خطأ.
إزالة في
يتم استخدام هذه الطريقة لإزالة عنصر في موضع محدد في مجموعة ArrayList. وفيما يلي بناء الجملة العام لهذا البيان
ArrayList.RemoveAt(index) - ستقوم هذه الطريقة بإزالة عنصر من موضع معين في قائمة المصفوفات.
الآن دعونا نرى هذا يعمل على مستوى الكود. ستتم كتابة كافة التعليمات البرمجية المذكورة أدناه إلى تطبيق وحدة التحكم لدينا. ستتم كتابة الكود في ملف Program.cs الخاص بنا.
في البرنامج أدناه، سنكتب الكود لنرى كيف يمكننا استخدام الطرق المذكورة أعلاه.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { ArrayList a1 = new ArrayList(); a1.Add(1); a1.Add("Example"); a1.Add(true); Console.WriteLine(a1.Count); Console.WriteLine(a1.Contains(2)); Console.WriteLine(a1[1]); a1.RemoveAt(1); Console.WriteLine(a1[1]); Console.ReadKey(); } } }
Code تفسير:-
- لذا فإن الخاصية الأولى التي نراها هي خاصية الكونت. نحن نحصل على خاصية Count لقائمة المصفوفة a1 ثم نكتبها إلى وحدة التحكم.
- في الجزء الثاني، نستخدم الأسلوب يحتوي على معرفة ما إذا كانت ArrayList a1 تحتوي على العنصر 2. ثم نكتب النتيجة إلى وحدة التحكم عبر أمر Writeline.
- أخيرًا، لعرض طريقة إزالة العنصر، نقوم بالخطوات التالية:
- أولاً، نكتب قيمة العنصر في موضع الفهرس 1 من قائمة المصفوفات إلى وحدة التحكم.
- ثم نقوم بإزالة العنصر الموجود في موضع الفهرس 1 من قائمة المصفوفات.
- أخيرًا، نكتب مرة أخرى قيمة العنصر في موضع الفهرس 1 من قائمة المصفوفات إلى وحدة التحكم. ستعطي مجموعة الخطوات هذه فكرة جيدة عما إذا كانت طريقة الإزالة ستعمل كما ينبغي.
إذا تم إدخال الكود أعلاه بشكل صحيح وتم تشغيل البرنامج، فسيتم عرض الإخراج التالي.
الإخراج:
لماذا القيمة الأخيرة صحيحة؟
إذا رأيت تسلسل الأحداث، فسيتم إزالة العنصر مثال من المصفوفة لأنه موجود في الموضع 1. ثم يتم استبدال الموضع 1 من المصفوفة بما كان في الموضع 2 سابقًا والذي تكون القيمة "صحيحة"
كيفية تكرار عناصر قائمة ArrayList في لغة C#
قراءة كل عنصر من عناصر ArrayList مهمة شائعة. ولأن ArrayList يخزن عناصره ككائنات، يمكنك الوصول إليها باستخدام حلقة foreach أو حلقة for تستخدم خاصية Count. تُعد حلقة foreach أبسط طريقة، إذ تتنقل بين كل عنصر بالترتيب دون الحاجة إلى فهرس.
يُنشئ المثال أدناه قائمة من السلاسل النصية ويطبع كل قيمة في سطر منفصل. كُتب الكود في ملف Program.cs الخاص بتطبيق وحدة تحكم.
الخطوة 1) قم باستيراد مساحة الاسم System.Collections وقم بإنشاء ArrayList بثلاثة عناصر.
الخطوة 2) استخدم حلقة foreach لقراءة كل عنصر ككائن وكتابته إلى وحدة التحكم.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { ArrayList a1 = new ArrayList(); a1.Add("Java"); a1.Add("Python"); a1.Add("Kotlin"); foreach (object item in a1) { Console.WriteLine(item); } Console.ReadKey(); } } }
Code تفسير:-
- يتم استيراد مساحة الاسم System.Collections بحيث يكون نوع ArrayList متاحًا للبرنامج.
- تتم إضافة ثلاث قيم نصية إلى قائمة ArrayList باستخدام طريقة الإضافة.
- تقوم حلقة foreach بقراءة كل عنصر ككائن، وتقوم طريقة Console.WriteLine بطباعته على سطر جديد.
عند تشغيل البرنامج، يقوم بطباعة Java, Pythonو كوتلن على أسطر منفصلة. ستعطي حلقة for مع خاصية Count نفس النتيجة مع السماح لك أيضًا باستخدام موضع فهرس كل عنصر.
طرق وخصائص ArrayList في لغة C#
توفر فئة ArrayList العديد من الطرق والخصائص المدمجة لإدارة عناصرها. فإلى جانب إضافة العناصر وحذفها، يمكنها فرز المجموعة والبحث فيها وعكس ترتيبها. وفيما يلي قائمة بأهم خصائصها.
| فريقنا | الوصف |
| إضافة | يضيف عنصرًا واحدًا إلى نهاية قائمة المصفوفة. |
| إدراج | يضيف عنصرًا في موضع فهرس محدد. |
| حذف | يزيل أول ظهور لعنصر معين. |
| إزالة في | يزيل العنصر الموجود في موضع الفهرس المحدد. |
| امسح | يزيل جميع العناصر من قائمة ArrayList. |
| تصنيف حسب: | يرتب العناصر بترتيب تصاعدي. |
| Reverse | Reverseترتيب العناصر في القائمة. |
| يحتوي | تُرجع القيمة "صحيح" إذا كان العنصر المحدد موجودًا في القائمة. |
| مؤشر | يُعيد موضع فهرس عنصر مُحدد. |
| العد التنازلي | خاصية تُرجع عدد العناصر المخزنة. |
| السعة | خاصية تُرجع عدد العناصر التي يمكن أن تحتويها القائمة. |
تتيح لك هذه العناصر إضافة العناصر والعثور عليها وترتيبها وإزالتها دون كتابة المنطق بنفسك، وهو أحد المزايا الرئيسية لاستخدام مجموعة بدلاً من مصفوفة عادية.
الفرق بين ArrayList و List في لغة C#
كل من ArrayList و generic قائمة تُخزّن هذه الأنواع مجموعة من العناصر التي قد تتوسع أثناء التشغيل، إلا أنها تختلف في كيفية تعاملها مع أنواع البيانات. معرفة هذا الاختلاف يُساعدك على اختيار النوع الأنسب لبرمجة C# الحديثة.
فيما يلي أبرز الاختلافات:
- أمان النوع: تقوم ArrayList بتخزين كل عنصر ككائن، بينما ترتبط List بنوع واحد معلن ويتم التحقق منها في وقت الترجمة.
- الأداء: تقوم ArrayList بتغليف وفك تغليف أنواع القيم مثل int، مما يكلف وقتًا، بينما تتجنب List التغليف لتحقيق سرعة أفضل.
- مساحة الاسم: يوجد ArrayList في System.Collections، بينما يوجد List في System.Collections.Generic.
- الصب: غالباً ما تتطلب القراءة من ArrayList تحويلاً إلى النوع الأصلي، لكن List تُرجع النوع الصحيح مباشرةً.
- التوصية: Microsoft يوصي باستخدام List للتطوير الجديد لأنه أكثر أمانًا وسرعة وسهولة في القراءة.
باختصار، يعتبر ArrayList مفيدًا لفهم التعليمات البرمجية القديمة أو التخزين المختلط الأنواع، بينما تعتبر List الخيار المفضل لمعظم التطبيقات اليوم.




