إنها أحد المزايا الرائعة التي تتمير بها لغة C# عن غيرها. ظهرت هذه الميزة أول مرة في الإصدار ( Dot Net 3.0 ) فما هي و ما الفائدة منها؟
نعلم كلنا كمبرمجين دوت نت اننا نستخدم أنماط بيانات و و مكتبات الـ .Net Framework و هناك الكثير من الكلاسات الأساسية التي نحب أن يكون فيها دوال تسهل علينا و توفر في حجم الكود المتكرر. طبعاً الكلام نفسه ينطبق على أي كلاس نستخدمه و يمكننا أن نوسعه و نضيف إليه دوال لاحقاً بنفس الطريقة, سأذكر هنا مثال بسيط للفهم:
جميعنا يعرف الكلاس String في C# الذي يملك بعض الدوال البسيطة, سنقوم بتوسعة هذا الكلاس بإضافة دالة جديدة غير موجودة فيه في الأصل و هي WordCount لحساب عدد الكلمات في السلسلة النصية
namespace ExtensionMethods
{
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
}MyExtensions: اسم الكلاس الذي يحوي دالة التوسع أو دوال التوسع و هذا الاسم اختياري اختر أي اسم يعجبك ولن يؤثر ذلك على دمج الدالة في الكلاس الهدف.
WordCount: دالة التوسع المراد إضافتها إلى الكلاس في وقت التنفيذ. يجب أن تكون static.
this String: هذا البارامتر يشير إلى الكلاس الهدف و الكلمة المحجوزة this هنا ضرورية جدا.
Str: يمثل المتغير الذي من خلاله سيتم استدعاء دالة التوسع يعني لاحقاً ستكتب التالي لاستخدام ادالة التوسع:
String text = "We are in arab team website"; Console.Write(text.WordCount());
أتمنى أن أكون قد أفدتكم بمعلومة جديدة.
تحياتي