تُعدُّ المصفوفات (Arrays) من هياكل البيانات الأساسية في لغة C#، حيث توفر تخزينًا فعالاً لمجموعات من العناصر من نفس النوع. إن فهم كيفية تحديد حجم المصفوفة أمر أساسي للعديد من مهام البرمجة، بدءًا من التكرار عبر العناصر وحتى إجراء العمليات الحسابية بناءً على أبعاد المصفوفة.
جدول المحتويات
- الحصول على طول المصفوفات أحادية البعد
- العمل مع المصفوفات متعددة الأبعاد
- استخدام LINQ للعدّ (والمزيد)
- أفضل الممارسات والاعتبارات
الحصول على طول المصفوفات أحادية البعد
أبسط طريقة لتحديد طول مصفوفة أحادية البعد هي استخدام خاصية Length
. هذه الخاصية تُعيد مباشرةً العدد الإجمالي للعناصر داخل المصفوفة.
int[] numbers = { 1, 2, 3, 4, 5 };
int arrayLength = numbers.Length; // arrayLength ستكون 5
Console.WriteLine($"طول المصفوفة هو: {arrayLength}");
تتميز هذه الطريقة بكفاءتها وتُوصى بها بشدة للمصفوفات أحادية البعد نظرًا لبساطتها وسرعتها.
العمل مع المصفوفات متعددة الأبعاد
بالنسبة للمصفوفات متعددة الأبعاد، لا تزال خاصية Length
توفر العدد الإجمالي للعناصر. ومع ذلك، إذا كنت تحتاج إلى أطوال الأبعاد بشكل فردي، فيجب عليك استخدام طريقة GetLength()
. هذه الطريقة تقبل عددًا صحيحًا يمثل فهرس البعد (بدءًا من 0) وتعيد طول ذلك البعد.
int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int rows = matrix.GetLength(0); // rows ستكون 3
int cols = matrix.GetLength(1); // cols ستكون 3
Console.WriteLine($"المصفوفة تحتوي على {rows} صفوف و {cols} أعمدة.");
Console.WriteLine($"مجموع العناصر: {matrix.Length}"); // matrix.Length ستكون 9
تُعدُّ GetLength()
أساسية عند معالجة المصفوفات متعددة الأبعاد عنصرًا عنصرًا أو عند الحاجة إلى معلومات بُعدية محددة.
استخدام LINQ للعدّ (والمزيد)
على الرغم من أنها أقل كفاءة من خاصية Length
لمجرد الحصول على العدد الإجمالي، إلا أن طريقة Count()
في LINQ توفر مرونة أكبر. فهي تسمح بعد العناصر بناءً على شروط محددة.
int[] numbers = { 1, 2, 3, 4, 5 };
int arrayLength = numbers.Count(); // arrayLength ستكون 5
Console.WriteLine($"طول المصفوفة هو: {arrayLength}");
// عد الأعداد الزوجية:
int evenCount = numbers.Count(n => n % 2 == 0); // evenCount ستكون 2
يبرز هذا النهج عندما تحتاج إلى عد العناصر التي تلبي معايير معينة، مما يجعلها أداة قيّمة تتجاوز تحديد الطول البسيط.
أفضل الممارسات والاعتبارات
- IndexOutOfRangeException: تأكد دائمًا من أن مؤشر المصفوفة الخاص بك ضمن النطاق الصحيح (من 0 إلى
Length - 1
) لتجنب أخطاءIndexOutOfRangeException
. - الحجم الثابت: تتميز المصفوفات في C# بحجم ثابت عند إنشائها. بالنسبة للمجموعات ذات الحجم الديناميكي، استخدم
List<T>
. - Length مقابل GetLength: استخدم
Length
لعدد العناصر الإجمالي في كل من المصفوفات أحادية ومتعددة الأبعاد. استخدمGetLength()
لأطوال الأبعاد الفردية في المصفوفات متعددة الأبعاد.
يعتمد اختيار الطريقة الصحيحة على نوع المصفوفة واحتياجاتك المحددة. بالنسبة للمصفوفات أحادية البعد، فإن Length
هي الطريقة الأكثر كفاءة وتوصية. بالنسبة للمصفوفات متعددة الأبعاد، استخدم Length
للعدد الإجمالي و GetLength()
لأحجام الأبعاد الفردية. توفر Count()
في LINQ مرونة للعد الشرطي.