الصفائف المزدحمة (إرشادات البرمجة لـ C#)

الصفيف المزدحم عبارة عن صفيف عناصره عبارة عن صفائف. يمكن أن تكون عناصر الصفيف المزدحم من أبعاد وأحجام مختلفة. يسمى الصفيف المزدحم أحياناً بـ"صفيف من الصفائف." تبين الأمثلة التالية كيف تعريف, وتهيئة, والوصول إلى الصفائق المزدحمة.

التعريف التالي لصفيف مفرد الأبعاد له ثلاثة عناصر, كل واحد منها عبارة عن صفيف مفرد الأبعاد من الأعداد الصحيحة:

int[][] jaggedArray = new int[3][];

قبل أن تتمكن من استخدام jaggedArray،فإنه يجب تهيئة عناصره. يمكنك تهيّئة عناصر مثل هذه:

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

كل عنصر من عناصر الصفيف أحادية البعد هي أعداد صحيحة. أول عنصر عبارة في صفيف الأعداد الصحيحة 5 و الثاني عبارة عن صفيف من 4 أعداد صحيحة, والثالث عبارة عن صفيف لـ 2 من الأعداد الصحيحة.

من الممكن أيضاً استخدام المُهيآت لتعبئة عناصر الصفيف بقيم, وفي هذه الحالة لن تحتاج لحجم الصفيف. فعلى سبيل المثال:

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };

يمكنك أيضاً تهيّئة الصفيف عند التعريف كما يلي:

    int[][] jaggedArray2 = new int[][] 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};

يمكنك استخدام النموذج المختصر التالي. لاحظ أنه لا يمكن حذف عامل التشغيل new من تهيئة العناصر بسبب عدم وجود تهيئة افتراضية للعناصر:

    int[][] jaggedArray3 = 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};

الصفيف المزدحم عبارة عن صفيف من صفائف وبالتالي تكون عناصره أنواع مرجع وتتم تهيئتهم بـ null.

يمكنك الوصول إلى عناصر الصفيف الفردية مثل هذه الأمثلة:

// Assign 77 to the second element ([1]) of the first array ([0]):
jaggedArray3[0][1] = 77;

// Assign 88 to the second element ([1]) of the third array ([2]):
jaggedArray3[2][1] = 88;

من الممكن خلط الصفائف متعددة الأبعاد و المزدحمة. التعريف والتهييئ التالي لصفيف مزدحم مفرد الأبعاد يحتوي على ثلاث صفائف ثنائية الأبعاد كعناصر بأحجام مختلفة. لمعلومات أكثر حول الصفائف ثنائية الأبعاد, راجع الصفيف متعدد الأبعاد ( ارشادات برمجة C# ).

int[][,] jaggedArray4 = new int[3][,] 
{
    new int[,] { {1,3}, {5,7} },
    new int[,] { {0,2}, {4,6}, {8,10} },
    new int[,] { {11,22}, {99,88}, {0,9} } 
};

يمكنك الوصول إلى عناصر فردية كما هو موضح في هذا المثال، الذي يعرض القيمة العنصر [1,0] للصفيف الأول (القيمة 5):

System.Console.Write("{0}", jaggedArray4[0][1, 0]);

أسلوب Length يرجع رقم من الصفائف الموجودة في صفيف مزدحم. على سبيل المثال، مع افتراض أنك قمت بتعريف الصفيف السابق, هذا الخط:

System.Console.WriteLine(jaggedArray4.Length);

يرجع القيمة 3.

مثال

ينشئ هذا المثال صفيف عناصره نفسها عبارة عن صفائف. لكل عنصر من عناصر الصفيف له حجم مختلف.

class ArrayTest
{
    static void Main()
    {
        // Declare the array of two elements:
        int[][] arr = new int[2][];

        // Initialize the elements:
        arr[0] = new int[5] { 1, 3, 5, 7, 9 };
        arr[1] = new int[4] { 2, 4, 6, 8 };

        // Display the array elements:
        for (int i = 0; i < arr.Length; i++)
        {
            System.Console.Write("Element({0}): ", i);

            for (int j = 0; j < arr[i].Length; j++)
            {
                System.Console.Write("{0}{1}", arr[i][j], j == (arr[i].Length - 1) ? "" : " ");
            }
            System.Console.WriteLine();            
        }
        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
/* Output:
    Element(0): 1 3 5 7 9
    Element(1): 2 4 6 8
*/

راجع أيضًا:

المرجع

الصفائف (دليل البرمجة لـ #C)

الصفائف أحادية الأبعاد ( ارشادات برمجة C# )

الصفيف متعدد الأبعاد ( ارشادات برمجة C# )

Array

المبادئ

دليل البرمجة لـ #C