14-10-12, 04:13 PM
كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .السلام عليكم ورحمة الله وبركاته .
نواصل في هذا الدرس مع واحدة من التطورات الجديدة مع .net framework 2.0 ، هي ال generics لتعطي بعداً جديداً لمفهوم ال overloading ، لنفترض مثالاً ما للطباعة بالشكل التالي :
C#:
كود :
[FONT=Tahoma]public static void print(int x)
{
Console.WriteLine("Print As Integer {0}", x);
}[/FONT]
[FONT=Tahoma]public static void print(long x)
{
Console.WriteLine("Print As Long {0}", x);
}[/FONT]
[FONT=Tahoma]public static void print(string x)
{
Console.WriteLine("Print As String {0}",x);
}[/FONT]
vb.net:
كود :
[FONT=Tahoma]Public Shared Sub print(ByVal x As Integer)
Console.WriteLine("Print As Integer {0}", x)
End Sub [/FONT]
[FONT=Tahoma]Public Shared Sub print(ByVal x As Long)
Console.WriteLine("Print As Long {0}", x)
End Sub [/FONT]
[FONT=Tahoma]Public Shared Sub print(ByVal x As String)
Console.WriteLine("Print As String {0}", x)
End Sub [/FONT]
الكود كما هو واضح قام بعمل ثلاث دوال بنفس الاسم لاستقبال بارميترات مختلفة ، وهكذا تجد انك تستطيع في الكود استدعاء الدالة الطباعة للارقام او لل longs او للنصوص ، جرب عدة عمليات لطباعة انواع مختلفة وشاهد جملة الطباعة ، على سبيل المثال الأوامر التالية :
كود :
[FONT=Tahoma]print("Ahmed");
print(12);
print(1000000000000);[/FONT]
سيكون ناتج الطباعة بالشكل التالي :
ال Generics ستغير المفهوم نوعاً ، حيث ان بامكانك الآن تعريف دالة لا تستقبل نوعاً معيناً من المتغيرات ، بل هي تستقبل <T> وتتعامل معه على هذا الاساس ، لذا قد نستطيع افتراض الدوال الثلاث السابقة بالشكل التالي :
C#:
كود :
[FONT=Tahoma]public static void print<T>(T x)
{
Console.WriteLine("Print As {0}: {1}",typeof(T), x);[/FONT]
[FONT=Tahoma]}[/FONT]
vb.net:
كود :
[FONT=Tahoma]Public Shared Sub print(Of T)(ByVal x As T)
Console.WriteLine("Print As {0}: {1}", GetType(T), x)
End Sub [/FONT]
والآن في حالة تطبيقنا لنفس المثال السابق ، سوف يكون الناتج كالتالي :
كانت هذه مقدمة سريعة لل Generics ، نواصل في دروس قادمة التعرف على نقاط أخرى حول هذا الموضوع ، لا تنس ان هذا درس من سلسلة دروس نطبق فيها مبادئ تتعلق ب LINQ حيث ان كل ما يتعلق بالانواع المجهولة والدوال المجهولة ... الخ يتعلق بشكل أو بآخر بال LINQ .