أخبار

 

تسجيل الدخول

أهلا, زائر. الرجاء الدخول أو التسجيل
تàهàèز 25, 2008, 11:30:19
اسم المستخدم: كلمة المرور:
تسجيل الدخول باسم المستخدم، كلمة المرور و مدة الجلسة

هل نسيت كلمة المرور؟

الإحصائيات

Members: 659
News: 194
Web Links: 3

مواضيع ذات صلة

آخر 10 أعضاء

ferass
nadaa
bozo2008
ayhambaker
slika
asdfgr_3
maha_shakkah
zaki_ncc
alitv
saa

إعلانات

Google
 
عالم الفيجوال بيسك دوت نت منتديات عالم الفيجوال بيسك دوت نت
جووجل
نظرة على جديد الفيجوال بيسك 9 - الجزء الثاني PDF Print E-mail
User Rating: / 2
PoorBest 
Written by أيوب جمال الإدريسي   
انأحد, 14 أêار 2006
بسم الله الرحمن الرحيم



راينا في الجزء الأول ان لدينا من بين الامكانيات الجديدة التعريف دون تحديد نوع المتغيرات(Implied Types) و ايضا ال Anonymous Types و لكن رغم ذلك هذه الأمور لا تشرح لنا بشكل دقيق كيفية و امكانية كتابة هذا الكود :



Dim mesPersonnes = Select New{.Nom = Personne.Nom, .Age = Personne.Age }_

From Personne In Personnes_

Where(Personne.Age < 40)





من أجل فهم جيد للكود اعلاه يجب ان نعرف ما يسمى بال Extensions Methods و هو ما سنتكلم عليه في الفقرة الموالية .

Extension Method

هذا النوع من ال Methods هو عبارة عن Shared Methods عندما تنشأها في كلاس معين مثلا تدخل نفسها كخاصية في جميع الكائنات الموجودة في الكلاس باستثناء تلك الموجودة فيها أصلا. كيف ذلك ؟ طبعا سوف نرى عن طريق مثال بسيط ماذا نعني بهذا الأمر لكن قبل ذلك اود أن أشير الى معلومة بسيطة هي أن تعابير الكود أعلاه مثل Select و From و Where هي عبارة عن Extensions Methods .

الآن دعونا نشرح جيدا معنى ال Extensions Methods و ذلك عن طريق مثال تطبيقي :

سوف نقوم الآن بانشاء Extension method قد لا تكون مفيدة بشكل كبير لكنها تنفع لأن تكون مثال لتقريب الصورة و توضيحها أكثر، ال Extension Method التي نريد إنشاءها الآن تقوم بأمر بسيط ألا و هو كتابة محتوي متغير من نوع IEnumerable في شاشة الدوس .

أولا لنرى معا هذا الكود البسيط :

قمنا في البدأ باعلان جدول String و طبعا أعطيناه قيم محددة



Dim Personnes = {_

New Personne{.Name = "Jessy", .Prenom = "Richard", .Age=20}_

New Personne{.Name = "Clark", .Prenom = "Sabine", .Age=21}_

New Personne{.Name = "Crazy", .Prenom = "Man", .Age=21}_

}




ثم بعد ذلك كما ترى هذا الكود عبارة عن LINQ Query و لاحظ معي أننا لم نحدد نوع المتغير



Dim OurResults = Select Personne From Personne In Personnes_

Where Personne.Age = 21




اذا عملنا Query على المتغير Personnes و أخذنا الأشخاص ذوو السن 21 اذا اذا ما أردنا ان نكتب النتائج مثلا على شاشة الدوس(Console Application) ما علينا فعله جد سهل حيث أن الكود سيكون كالتالي :



For Each Personne In OurResults

Console.WriteLine(Personne.Name)

Next



و النتيجة ستكون على الشكل التالي :



Jessy

Crazy





الى هنا كل شئ واضح لكن دعونا كيف يمكننا ان نعلن Extension Method و قبل لماذا نريدها أصلا ؟؟؟

نحن نريد الآن عندما نرغب في كتابة تلك المعلومات على الشاشة ان نستدعي ال Method بواسطة المتغير نفسه أي أن ال Method الخاصة بكتابة النتائج على الشاشة ستصبح عنصرا من عناصر المتغير. دعوني أقرب الأمر و ليكن ذلك عن طريق تعريف ال Extension Method الخاصة بنا و سيكون اسمها مثلا Write :





Public Shared Sub Write(Of T)(ByVal [Me] As IEnumarable(Of T))

For Each Personne In T

Console.WriteLine(Personne.Name)

Next

End Sub





كما ترون لا يوجد فرق بين هذه ال Method و ال Methods العاديين سوى وجود Me و التي تعتبر مؤشر للكائن الذي يستدعي ال Method و T هنا تعبر عن ال Collection الممررة الى ال Extension Method و الكود الخاص بالحلقة التكرارية طبعا واضح.

الآن بعد أن أنشأنا Extension Method خاصة بنا ماذا يمكننا ان نفعل بها ؟؟ بكل بساطة يمكن بعد ان أنشأنها كتابة الكود التالي دون مشاكل :



OurResults.Write()





هكذا يمكننا ان نحصل على النتيجة بكل بساطة بل و يمكننا ان نفعل اكثر من ذلك كون ال Extension Method مشتركة (Shared) :


Write(OurResuts)



اذا الآن يمكن ان يتضح لنا كيف تشتغل اكواد ال LINQ يعني مثل ال Select و Where فمثلا لو أخذنا Where فستكون تقوم فقط باختبار شرط مثلا Name="Muslim" و ترجع نوع Boolean.

الى هنا و ينتهي المقال و اتمنى ان يكون قد أفادكم و لو قليلا

و السلام عليكم و رحمة الله و بركاته

Add as favourites (43) | Quote this article on your site | Views: 3125 | E-mail

Be first to comment this article
RSS comments

Only registered users can write comments.
Please login or register.

Powered by AkoComment Tweaked Special Edition v.1.4.6
AkoComment © Copyright 2004 by Arthur Konze - www.mamboportal.com
All right reserved

Last Updated ( انأربظاء, 11 حزêراو 2008 )
 
< Prev
Advertisement

جميع حقوق الطبع محفوطة لموقع عالم الفيجوال بيسك دوت نت


hit counter