English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 基础教程

C# 高级教程

C# 面向对象(OOP)

C# ArrayList(动态数组)

在C#中,ArrayList 是一个非泛型的对象集合,其大小会动态增加。它与Array相同,只是它的大小是动态增加的。

一个ArrayList可以用来添加未知数据,可能你并不知道的类型和数据的大小。

创建 ArrayList

System.Collections 命名空间中包含的 ArrayList 类。ArrayList使用 new 关键字创建对象。

using System.Collections;
ArrayList arlist = new ArrayList(); 
// 或者
var arlist = new ArrayList(); // 推荐

在ArrayList中添加元素

使用Add()方法或对象初始值设定项语法在 ArrayList 中添加元素。

ArrayList 可以包含多个 null 和 重复值。

// 使用ArrayList.Add()方法添加元素
var arlist1 = new ArrayList();
arlist1.Add(1);
arlist1.Add("Bill");
arlist1.Add(" ");
arlist1.Add(true);
arlist1.Add(4.5);
arlist1.Add(null);
// 使用对象初始化语法添加元素
var arlist2 = new ArrayList()
                {
                    2, "Steve", " ", true, 4.5, null
                };

使用 AddRange (ICollection c)方法在 ArrayList 中添加一个完整的 Array、 HashTable、 SortedList、 ArrayList、 BitArray、 Queue 和 Stack。

var arlist1 = new ArrayList();
var arlist2 = new ArrayList()
                    {
                        1, "Bill", " ", true, 4.5, null
                    };
int[] arr = { 100, 200, 300, 400 };
Queue myQ = new Queue();
myQ.Enqueue("Hello");
myQ.Enqueue("World!");
arlist1.AddRange(arlist2); //إضافة ArrayList إلى ArrayList 
arlist1.AddRange(arr); //إضافة مصفوفة إلى ArrayList 
arlist1.AddRange(myQ); //إضافة طابور إلى ArrayList

زيارة ArrayList

قام فئة ArrayList هذه بتحقق من interface IList. لذا،يمكن استخدام محول الوصول للوصول إلى العناصر مثل مصفوفة. تبدأ الأسس من الصفر وتزيد ب 1 لكل عنصر متقدم.

يحتاج إلى تحويل صريح إلى النوع المناسب أو استخدام متغير var.

الشئ arlist = new ArrayList()
                {
                    1,
                    "Bill",
                    300,
                    4.5f
                };
//استخدام محول الوصول للوصول إلى عنصر واحد
عدد firstElement = (عدد) arlist[0]; //يعود 1
سلسلة secondElement = (سلسلة) arlist[1]; //يعود "Bill"
//عدد secondElement = (عدد) arlist[1]; //خطأ: لا يمكن تغطية السلسلة لتكون عدد
//استخدام كلمة المفتاح var دون تحويل صريح
الشئ firstElement = arlist[0]; //يعود 1
الشئ secondElement = arlist[1]; //يعود "Bill"
//الشئ fifthElement = arlist[5]; //خطأ: الموقع يتجاوز النطاق
//تحديث العنصر
arlist[0] = "Steve"; 
arlist[1] = 100;
//arlist[5] = 500; //خطأ: الموقع يتجاوز النطاق

استكشافArrayList

ArrayList تحقق من Collection interface،و التي تدعم التكرار على نوع المجموعات. لذا،استخدم foreach و循环 for لتكرار ArrayList.ممتلكة Count من ArrayList تعود عدد العناصر في ArrayList.

ArrayList arlist = new ArrayList()
                        {
                            1,
                            "Bill",
                            300,
                            4.5F
                        };
foreach (الشئ item في arlist)
    Console.Write(item + ", "); //输出:1,Bill,300،4.5, 
            
لـ(عدد i = 0؛i < arlist.Count;i++)
    Console.Write(arlist[i] + ", "); // الناتج: 1،Bill،300،4.5,

إدراج العنصر في ArrayList

استخدام طريقة Insert() لإدراج العنصر المحدد في موقع معين في ArrayList.

القواعد:

void Insert(int index, Object value)
ArrayList arlist = new ArrayList()
                {
                    1,
                    "Bill",
                    300,
                    4.5f
                };
arlist.Insert(1, "Second Item");
foreach(var val in arlist)
    Console.WriteLine(val);

استخدام طريقة InsertRange() لإدراج مجموعة في موقع معين في ArrayList.

القواعد: 

void InsertRange(int index, ICollection c)
ArrayList arlist1 = new ArrayList()
                {
                    100, 200, 600
                };
ArrayList arlist2 = new ArrayList()
                {
                    300, 400, 500
                };
arlist1.InsertRange(2, arlist2);
foreach(var item in arlist1)
    Console.Write(item + ", "); // الناتج: 100،200،300،400،500،600،

إزالة العنصر من ArrayList

استخدام طريقة Remove()،RemoveAt() أو RemoveRange لإزالة العنصر من ArrayList.

ArrayList arList = new ArrayList()
                {
                    1,
                    null,
                    "Bill",
                    300,
                    "",
                    4.5f,
                    300,
                };
arList.Remove(null); // إزالة أول ظهور null
arList.RemoveAt(4); // إزالة العنصر في الموقع 4
arList.RemoveRange(0, 2); // إزالة العنصر الأول (الواقعي 0) و العنصر الثاني

التحقق من عناصر ArrayList

استخدام طريقة Contains() لتحديد ما إذا كان العنصر المحدد موجودًا في ArrayList. إذا كان موجودًا، يتم العودة إلى true، وإلا يتم العودة إلى false.

ArrayList arList = new ArrayList()
                {
                    1,
                    "Bill",
                    300,
                    4.5f,
                    300
                };
Console.WriteLine(arList.Contains(300)); // true
Console.WriteLine(arList.Contains("Bill")); // true
Console.WriteLine(arList.Contains(10)); // false
Console.WriteLine(arList.Contains("Steve")); // false
ArrayList بسبب مشاكل الأداء، لا يُنصح باستخدام هذه الفئة. بدلاً من ذلك، استخدم List<object> لتحديد الأجسام المختلفة. لتحديد بيانات نفس النوع، استخدم List<T> generics.

فئة ArrayList

الشكل التالي يوضح فئة ArrayList هذه

C#ArrayList

خصائص ArrayList

الخصائص
وصف
Capacity

الحصول على أو تعيين عدد العناصر التي يمكن أن تحتويهاArrayList

Count

الحصول على عدد العناصر الفعلية الموجودة فيArrayList

IsFixedSize

الحصول على قيمة تشير إلى ما إذا كانArrayList حجمه ثابت

IsReadOnly

الحصول على قيمة تشير إلى ما إذا كانArrayList قابلاً للقراءة فقط

النقطة

الحصول على أو تعيين العنصر في الموضع المحدد

طريقة ArrayList

الطريقةوصف
Add()/AddRange()

إضافة عنصر واحد في نهايةArrayList باستخدام Add ()

إضافة جميع العناصر في المجموعة المحددة إلىArrayList باستخدام AddRange ()

Insert()/InsertRange()

إدراج عنصر واحد فيArrayList في الموضع المحدد باستخدام Insert ()

إدراج جميع العناصر في المجموعة المحددة فيArrayList من الموضع المحدد باستخدام InsertRange ()

Remove()/RemoveRange()

إزالة العنصر المحدد من ArrayList باستخدام Remove ()

إزالة النطاق المحدد من العناصر من ArrayList باستخدام RemoveRange ()

RemoveAt()

إزالة العنصر في الموضع المحدد من ArrayList

Sort()

ترتيب جميع العناصر في ArrayList

Reverse()

ترتيب العناصر في ArrayList بالعكس

Contains

تحقق من وجود العنصر المحدد في ArrayList. إذا كان موجودًا، فسيتم العودة إلى true، وإلا سيتم العودة إلى false.

Clear

إزالة جميع العناصر من ArrayList.

CopyTo

نسخ جميع العناصر أو نطاق العناصر إلى مصفوفة قابلة للتحصيل.

GetRange

استرداد عدد العناصر المحددة من ArrayList باستخدام مؤشر معين.

IndexOf

البحث عن العنصر المحدد، إذا تم العثور عليه، فسيتم العودة إلى هذا العنصر من البداية. إذا لم يتم العثور على العنصر، فيتم العودة إلى -1.

ToArray

استرداد مصفوفة من ArrayList.