ArrayList ومجموعة قائمة صواب

على System.Collections.ArrayListأو System.Collections.Generic.List<T>الكائن هو إصدار sophهوticated عنصر الصفيف. ArrayListالفئة و List<T>فئة عامة توفر بعض الميزات التي يتم عرضها في معظم System.Collectionsالفئات والتي لا تكون في Arrayclass. فعلى سبيل المثال:

  • سعة Array تكون ثابتة، بينما سعة ArrayList أو List<T> تتسع تلقائياً عندما يكون مطلوباً ذلك. إذا تغيرت قيمة الخاصية ArrayList.Capacity، فستتم عملية إعادة تخصيص ذاكرة ونسخ العناصر تلقائياً.

  • توفر ArrayList وList<T> أساليب التي تقوم بإضافة أو إدراج أو إزالة نطاق من العناصر. في Array، يمكنك الحصول علي عنصر واحد فقط أو تعيينه في المرة الواحدة.

  • نسخة متزامنة من ArrayListهو سهلة الإنشاء باستخدام Synchronizedأسلوب؛ على الرغم من ذلك، th هو نوع المزامنة هو فعالة نسبيا. تتركه الفئات Array و List<T> إلي المستخدم ليقوم بتنفيذ المزامنة. لا توفر مساحة الاسم System.Collections.Concurrent نوع قائمة متزامنة، ولكن توفر الأنواع ConcurrentQueue<T> و ConcurrentStack<T>.

  • ArrayList and List<T> provide methods that return read-only and fixed-size wrappers to the collection. Arrayهل عدم.

من جانب اخر، يقدم Array بعض مرونة التي لايقدمها ArrayList و List<T>. فعلى سبيل المثال:

  • يمكنك تعيين الحد الأدنى من Array ، ولكن الحد الأدنى لـ ArrayList أو List<T> هو دائماً صفر.

  • يمكن أن يكون لـ Array عدة أبعاد، ولكن يحتوي ArrayList أو List<T> دوماً علي بعد واحد. ومع ذلك، يمكنك بسهولة إنشاء قائمة صفائف أو قائمة من القوائم.

  • توفر Array لنوع محدد(غير Object) أداء أفضل من ArrayList. وهذا لأن العناصر من ArrayList تكون من النوع Object; لذلك، فالتحويل إلي كائن والتحويل إلي نوع القيمة تظهر عادةً عند تخزين أو استرداد نوع القيمة. ومع ذلك، يمكن لـ List<T> توفير أداء مشابه لصفيف من نفس النوع إذا لم يكن هناك داعي لإعادة التخصيص; وهذا يعني، إذا كانت السعة الأولي مساوية للحد الأقصي تقريباً لحجم القائمة.

أغلب المواقف التي تستدعي صفيف يمكنها استخدام ArrayList أو List<T> بدلاً من ذلك; فهي أسهل للاستخدم، و بشكل عام، يكون أداءها مشابه لصفيف من نفس النوع.

Array هي عبارة عن مساحة الاسم System; وتكون ArrayList موجودة في مساحة الاسم System.Collections; وتكون List<T> موجودة في مساحة الاسم System.Collections.Generic.

راجع أيضًا:

المرجع

ArrayList

System.Collections

List<T>

System.Collections.Generic

Array

System.Collections.Concurrent

موارد أخرى

أنواع المجموعة المستخدمة بشكل شائع