بسم الله الرحمن الرحيم
ما الفرق بين Length و Count في الـ.NET ؟
أعلم أن Length خاصية و Count دالة ولكن كلاهما يقوم بإرجاع نفس القيمة وهي طول المصفوفة فهل هناك فرق سواء وظيفي أو نظري بينهما ؟
بما أننا نتعامل مع أصناف تحاكي الأشياء في الواقع فكان الحرص على استخدام نفس المسميات المستخدمة في الواقع وإن كانت برمجيا تعبر عن نفس الأمر
فكلمة Length تعبر عن طول ولأن المصفوفة ومن ضمنها النوع string الذي هو مصفوفة أحرف فقد تم استخدام طول السلسلة كما في الواقع والذي يفترض أن يكون بواحدة الطول وهو المتر أو الإنش أو غيرها لكن واحدة الطول في السلسلة الرمزية هي الحرف وفي المصفوفة هي الحجرة
أما Count فتجدها كخاصية في الأنواع الجمعية معلومة العدد في لحظة الفحص مثل List و Dictionary و غيرها
لكن في الأنواع الجمعية التي تخضع لاستفسارات Linq و لكونها تكون مجرد استفسارات وليست كائنات حقيقية إلا حين الحاجة لزيارة عناصرها فإن استفسارات Linq هي مناهج موسعة وحيث لا يمكن إضافة خصائص موسعة لهذا تجد كل الاستفسارات هي مناهج ومن ضمنها الاستفسار عن العدد
كمثال لو كان لديك كائن من النوع IQuerable والذي يمثل استفسار سيكوال فعد استدعاء دالة Count لا يتطلب تجسيد كل العناصر في الذاكرة ليقوم بعدها وإنما يكفيه أن يرسل الاستفسار إلى قاعدة البيانات ليعود برقم واحد وهو العدد أي أن معرفة العدد ليست قيمة خاصية وإنما هو عملية استفسار
الحقيقة لم ابرمج بالدوت نت لكن وجدت شرح في stackoverflow
Length: Total number of elements in an array
Count(): LINQ extension method that works with other collection types as well
التعليقات