#1
|
||||
|
||||
الدرس الواحد والثلاثون : ال Generic دورة .net 2008
بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته . نواصل في هذا الدرس مع واحدة من التطورات الجديدة مع .net framework 2.0 ، هي ال generics لتعطي بعداً جديداً لمفهوم ال overloading ، لنفترض مثالاً ما للطباعة بالشكل التالي : C#: كود PHP:
كود PHP:
كود PHP:
ال Generics ستغير المفهوم نوعاً ، حيث ان بامكانك الآن تعريف دالة لا تستقبل نوعاً معيناً من المتغيرات ، بل هي تستقبل <T> وتتعامل معه على هذا الاساس ، لذا قد نستطيع افتراض الدوال الثلاث السابقة بالشكل التالي : C#: كود PHP:
كود PHP:
كانت هذه مقدمة سريعة لل Generics ، نواصل في دروس قادمة التعرف على نقاط أخرى حول هذا الموضوع ، لا تنس ان هذا درس من سلسلة دروس نطبق فيها مبادئ تتعلق ب LINQ حيث ان كل ما يتعلق بالانواع المجهولة والدوال المجهولة ... الخ يتعلق بشكل أو بآخر بال LINQ . Structure and Class Generics : في الدرس السابق تعرفنا على ال methods التي تطبق ال Generics ، ايضاً ال Classes وال Structs يمكنها تطبيق هذا المفهوم لبعض البيانات بها ، سنفترض مثال ال class وما ينطبق على ال class ينطبق على ال struct . لنفترض كلاس يحتوي على البضائع ، وحيث ان لدينا نوعين من البضائع يحتوي النوع الأول على الاسم وهي تلك البضائع التي يتم تصنيعها في المحل ( انوع من الجبن او الزبادي ) وبضائع أخرى جاهزة تحتوي على الباركود ، بهذه الطريقة نسنتج ان حقل Identify قد يحتوي على اسم في بعض البضائع ورقم في بضائع أخرى . الحل التقليدي كان ليعتبر وجود كلاسين منفصلين ، أو في أحسن الظروف وضع قيمة منطقية لتحديد اذا ما كنت ساستخدم حقل ال name ام حقل ال numbner ، لكن مع ال Generics تم تغيير هذا المفهوم ، في هذه الحالة سيصبح الكلاس بالشكل التالي : c#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
Generic Collection : كما تعرفنا في الدرس السابق ان بامكاننا عمل Generic Class ، اصبح الدور الآن على عمل Generic Collection ، سنقوم بعمل كلاس يستقبل عدة كلاسات ويقوم بعدة عمليات مثل Add,Delete ... etc ، كما تعلمنا سابقاً ، هذا مثال على Collection ما : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
هنا ظهرت لنا مشكلة تتعلق بكون ال Generic Collection الخاص بنا يحتوي على خصائص مثل .name لعرضها ، وهذا ما لا يتوفر مثلاً لكل الكلاسات او للارقام مثلاً ، من هنا جاءت لنا الكلمة المحجوزة Where والتي سنتحدث عنها في الدرس القادم . Where T : يتيح لنا هذا الشرط في عمل ال Generic Collection ان لا نقبل سوى بعض الفئات ، يمكننا وضع الشروط بأحد الطرق التالية : where T : struct بحيث لا يقبل سوى متغيرات من النوع ValueTpe . where T : class لا يقبل سوى من النوع RefernceType . where T : new() لا بد ان يحتوي على Constructor . where T : classname where T : Iinterfacename لا بد ان يكون مشتق من class معين او يطبق interface معين . بهذه الطريقة يمكننا دمج عدة شروط مع بعضها ، لنرى المثال التالي سوية : C#: كود PHP:
كود PHP:
ايضاً المثال التالي : c#: كود PHP:
كود PHP:
والآن ، اصبح بامكانك التحكم بعض الشيء في T بدلاً من جعلها مفتوحة للجميع . آخر نقطة انبه عليها في هذا الدرس ، انه وتحت مجال الاسماء System.Collections.Generic تجد العديد من ال Collections التي تعاملنا معها سابقاً مثل ال Queue او ال Stack ، ولكن بدلاً من تعاملها مع object فهي تطبق مبادئ ال Generics باستقبالها T . الآن استطيع ان ازعم انني غطيت بعض النقاط الاساسية في عالم ال Generics ، اتمنى ان اكون قد قدمت شيئاً جديداً . والله الموفق ... والسلام عليكم ورحمة الله وبركاته .
|
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس السادس عشر : ال OverLoading دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 1 | 03-02-2011 03:43 PM |
الدرس الثلاثون : ال Collections دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-25-2010 02:15 PM |
الدرس التاسع عشر : ال Encapsulation دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-20-2010 03:07 PM |
الدرس الرابع عشر : this دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-19-2010 07:58 PM |
الدرس التاسع : ال Enumeration دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-18-2010 04:27 PM |