C# Fundamentals

حساب طول المصفوفة بكفاءة في C#

Spread the love

تُعدُّ المصفوفات (Arrays) من هياكل البيانات الأساسية في لغة C#، حيث توفر تخزينًا فعالاً لمجموعات من العناصر من نفس النوع. إن فهم كيفية تحديد حجم المصفوفة أمر أساسي للعديد من مهام البرمجة، بدءًا من التكرار عبر العناصر وحتى إجراء العمليات الحسابية بناءً على أبعاد المصفوفة.

جدول المحتويات

الحصول على طول المصفوفات أحادية البعد

أبسط طريقة لتحديد طول مصفوفة أحادية البعد هي استخدام خاصية 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 مرونة للعد الشرطي.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *