للتسجيل اضغط هـنـا

شات عيون اضغط هنا لدخول الشات

اضغط هنا لمشاهدة اخر المشاركات الجديدة بالمنتدى


التغريدات والاهداءات






تطوير المواقع - ستايلات - لغات البرمجة - حلول مشاكل المنتديات تطوير المنتديات 2012 , تطوير المواقع , ترايدنت , مطور في بي 2013 , تعليم لغة visual basic , لغات برمجية 2011 , حلول مشاكل المواقع 2012 , لغات البرمجة PhP & html يختص بلغات البرمجة PhP و html وجميع لغات البرمجة

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
قديم 09-03-10, 01:40 AM   #1

 رقم العضوية : 44839
 تاريخ التسجيل : 15 - 1 - 2010
 الجنس : ذكر
 الدوله : السعودية
 المشاركات : 89,414
الاعجابات التي تلقيتها : 5
 عددالنقاط : 50
 تقييم المستوى : php يتقدم الى الامام
 قوة التقييم : 566
افتراضي Working with .NET Enumerations

بسم الله الرحمن الرحيم

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


أود أن أشرح مصطلح شائع في ال .NET وهو ال Enumeration


دعونا نتخيل أننا لدينا نحل ، سوف نقوم بعمل كلاس للنحل اسمه
Worker، بهذه المناسبة دعوني أعرفكم بصديقتي زينة ..

هذا الكلاس يحتوي على constructor يستقبل قيمة job
الذي يمثل عمل النحلات ، لو افترضنا ان القيمة job من نوع
stringاذا نستطيع ان نرسل قيم للconstructor كالتالي:



كود PHP:
Worker buzz= new worker(("محامي عام ;
Worker colver=new worker("
("مذيعة أخبار;
Worker Gladys=new worker(“ ("
حارسة بناية;


حسنا ، الان ننتقل............لحظة ، لحظة .....عفوا !! ماذا قلت

: مذيعة أخبار؟؟!!! ، حارسة بناية ؟؟!!!...ألم نكن نتكلم عن

النحل ، مادخل هذه الأعمال بشغالات النحل ؟؟....



الكلاس الذي افترضناه Worker والذي قلنا أنه يحتوي على

constructor يستقبل قيم من نوع string سوف يقبل هذه

القيم بدون اي خطأ ، رغم أنها لايجب أن تقبل ، لأنها غير
منطقية على الإطلاق..
والقيم التي يجب أن تقبل مثلا : حارسة خلية، جامعة

رحيق..ومن هذا القبيل ، لأن الكود مصمم لهذا الغرض.
حسنا ، ممكن أن نحل المشكلة بإضافة كود للconstructor


للتحقق مما إذا كانت القيمة مقبولة أم لا، وفي حالة أردنا إضافة عمل اخر الى قائمة الأعمال ، يجب علينا تعديل الكود من جديد وإعادة التنفيذ ...
وماذا لو كان لدينا كلاس اخر يتطلب ايضا التحقق من مدى

صلاحية قيم ما... سوف نكرر نفس الكود للتحقق من صحة القيم.

اووووف ، هذا الحل مرهق وليس عملي !



ماالحل إذن:

الحل هو ان نسمي قائمة بعينها تحوي القيم المقبولة ، نسمي هذا
العمل بالسي شارب Enumeration
والفعل Enumerate في قاموس لونج مان يعني :
to name a list of things one by one



وفسر الماء بالماء..... :confused::p



حسنا كما قلت بداية، تسمية قائمة من الأشياء



==================================
Enum let you enumerate a set of valid values


Enum نوع من البيانات التي تحوي قيم من نوع واحد في كل مرة.
بمثالنا هذا مثلا ، سوف نعرف Enum يحتوى على مجموعة قيم والتي ستمثل أعمال النحلة ، مثلا جمع الرحيق، رعاية البيض، رعاية صغار النحل ، حراسة خلية النحل ...وهكذا ....
سنعرفها داخل الكلاس Worker كالتالي:
كود PHP:
Public enum Job{
NectarCollector,( جمع الرحيق)
StingPatorl,(درويات حراسة للخلية)
HiveMaintenence,(صيانة الخلية)
BabyBeeTutoring,(رعاية صغار الخلية)
EggCare,(العناية بالبيض)
HoneyManufacturer(انتاج العسل)
}


الان احتلت مشكلتنا ، فقد حصرنا القيم المقبولةفي عمل النحل،
ويمكن ارسال القيمة للconstructor كالتالي:

Worker nany=new Worker(Job.EggCare);
ارسلنا بين القوسين القيمة التي نريد، باستخدام اسم الEnum
والقيمة المطلوبة كما هو واضح.
لانستطيع ارسال اي قيمة أخرى ، مثلا لو كتبنا السطر التالي:
Worker buzz=new Worker(Job.AttorneyGeneral);
لن ينفذ هذا السطر من الكود وسنحصل على الخطأ التالي من الكومبايلر:
“Job” doesn’t contain a definition for “AttoneyGeneral”
الخطأ يقول ان Job التي هي اسم Enum لايحوي تعريف
للقيمة
AttoneyGeneral
================================
======================================== ========== ===============
Enum let you represent numbers with
names
هذا ميزة مفيدة جدا، فالنوع Enum تمكننا من التعامل مع الأرقام كأسماء، قد نفضل ذلك في بعض الأحيان، في هذه الحاله لن يكون لدينا أرقام متوزعة هنا وهناك في الكود دون أن يكون معناها واضحا.
دعونا نقترض Enum لحساب النقاط في مسابقة أحصنةHorseCompetition
وهذا سيكون اسم الكلاس :
كما نلاحظ في الكود يمكننا استخدام (int) لعمل Casting

واجراء عمليات حسابية ، او استخدام الميثد .ToString()

لاستخدام الأسماء، وفي حال لم نعطي قيم للأسماء داخل ال

Enum سوف يقوم الكوبايلر باعطاء ارقام Defulat ابتداءا
من صفر, واحد , وهكذا....
القيم داخل Enum تلقائيا تكون قيمتها من نوع int لكن ماذا

لو أردنا أن نعطيها قيمة كبيرة ؟!

اذا اردنا ذلك يجب استخدام
: Operator

كود PHP:
Public enum TrickScore:long
{ walk=7,
Dance=2500000000025
}


اذا لم نكتب : long سوف نحصل على الخطأ التالي:
Cannot implicitly covert type ’long’ to ‘int’
الان نأتي الى مثالنا الرئيسي : ( أحلى شيء في الشروحات الأمثلة )
سوف نقوم بعمل كود يحتوي على كلاس يمثل لعبة الورق(كوتشينة)
ونحتاج لتعريف Suits two enums واحد يمثل النوع :



وواحد لتمثيل القيم، واحد، اثنين، ثلاثة.......، الجوكر ، الملك ....

سنبني فورم يتكون من زر واحد عند الضغط عليه تظهر لي

رسالة تحمل قيم مختلفة لأوراق اللعب بأنواع مختلفة .






نأتي الان لوقت عمل الكود :
أولا ننشئ الفورم ونسحب button واحد ،
ثم ننشئ الكلاس :cards

كود PHP:
public class Card{
public
enum Suits{
Spades,
Clubs,
Diamonds,
Hearts
}
public
enum Values{
Ace=1,
Two=2,
Three=3,
Four=4,
Five=5,
Six=6,
Seven=7,
Eight=8,
Nine=9,
Ten=10,
Jack=11,
Queen=12,
King=13,
}
public
Suits suit;//we difine a varailbe of the enum Suits
public Values value;//we define a variable of the enum Values
public Card(Suits suit,Values value)
{
this.suit=suit;
this.value=value;
}

public
string Name{
get{ return value.ToString()+" of "+suit.ToString();}
}
}


داخل كود ال Button نكتب الكود التالي :

كود PHP:
Random random = new Random();//Random is a built-in class, we created an object from it

Card card = new Card((Card.Suits)random.Next(4), (Card.Values)random.Next(1, 14));
MessageBox.Show(card.Name);





[/RIGHT]
[/LEFT]
[/RIGHT]
[/LEFT]


وهذه بعض النتائج التي تظهر عند الضغط المتكرر على زر الفورم :



أتمنى أن أكون وفقت في الشرح

دمتم في رعاية الله


أختكم : يمانية





Working with >NET Enumerations


من مواضيعي
0 على موقع Top4top - أحدث إصدار لبرنامج ||BB FlashBack Pro 5.24.0.4208|| لتصوير الشاشة
0 على موقع Top4top - أحدث إصدار لبرنامج لا تخترقني "لا تخترق حاسوبي" ||UnHackMe 8.60 Bu
0 مشكلة فى الياهو ماسينجر
0 مساعدة بخصوص ميموري كارد...
0 لتحويل مجموعات الفيديو الرقمية الخاصة بك iSkysoft DVD Creator 4.1.0.1 + crack +with
0 ما هو افضل موقع موثوق يعطي عضوية بريميوم للتحميل من مواقع الرفع المختلفة
0 تحميل انتى فايرس افاست 2017 Download Avast مجانا
0 تحميل برنامج هوت سبوت شيلد 2017 Hotspot Shield
0 روابط مباشره - ********* Windows 7 Aio SP1 (x86/x64) Multilanguage January 2017 Full
0 Soft Solutions PDF to JPG Converter
0 الاصدار الاخير من idm مع تفعيل البرنامج بدون فيروسات شرح ب الفيديو
0 برنامج ProgDVB 2017 لمشاهده قنوات مشفرة كـ شوتايم و اوربت, والجزيرة
0 كيف نوقف الاسباب التي تبطء الجهاز؟ صورة لـ ( ادارة المهام )
0 تحميل ملفات 500% فوق السرعة العادية Download Master 6.12.1.1538 Portable
0 تحميل برنامج Adobe Photoshop CC 2017 تورنت
0 متصفح الأنترنت الشهير فى أحدث إصداراته Mozilla Firefox 52 Beta 1
0 عملاق المتصفحات باصدار جديد فورى Mozilla Firefox 51.0.1
0 الاقلاع بطيء ثم شاشة زرقاء
0 مشكلة تصطيب أحد البرامج العربية على ويندوز
0 موسوعة ألغاز الرياضيات والمنطق والاستنتاج


 
رد مع اقتباس مشاركة محذوفة
إضافة رد

مواضيع جديدة في قسم تطوير المواقع - ستايلات - لغات البرمجة - حلول مشاكل المنتديات


يتصفح الموضوع حالياً : 1 (0 عضو و 1 ضيف)
 
أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are معطلة
Pingbacks are متاحة
Refbacks are معطلة


 

تفضلو بزيارة مواقعنا الصديقة من هنا

 


شرح طلب كلمة المرور من هنا


جميع الأوقات بتوقيت GMT +3. الساعة الآن 03:07 PM.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0