الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Enumerations

بدأه عمرو عماد في 27 مارس 2013 · 2 رد · 465 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
القائمة البرمجية .. (هذا إختصار من دماغي)

كثيرا ما نحتاج أثناء كتابة كود نحتاج أن  نقوم بعمل ليستة من الإختيارات الثابتة والتي لن تتغير طيلة البرنامج مثل أيام الأسبوع عدد فصول السنة

 

وحتي نستطيع تعرف قائمة نقوم بإستخدام الكلمة المحجوزة في اللغة enum كما يلي

 

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

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

وسوف نقوم بإستدعائها فيما بعد هكذا

 

Days Day;Day=Days.Sat;

ولو قومنا بعرض قيمة السطر التالي في الكونسول

 

Console.WriteLine((int)Day);

سيقوم بطباعة الرقم 0  , ولو أردت تغير القيمة الإبتدائية لهذه القائمة البرمجية ما عليك سوي تغير طريقة تعريف القائمة كما يلي :

 

enum Days {Sat=5, Sun, Mon, Tue, Wed, Thu, Fri};

فيكون

Days.Sat --- > 5Days.Sun ---> 6 وهكذا

وخلي بالك لو كتبنا التعريف بالطريقة دي

enum Days {Sat, Sun=5, Mon, Tue, Wed, Thu, Fri};

يكون

 

Days.Sat ---> 0Days.Sun --->5Days.Mon ---> 6وهكذا

 

 

لكن سؤال ما هو معني

enum Days : short { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
enum Days : Long { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
#2

النوع الافتراضي لقيم خانات التعداد هو Int
و لكن لو وضعته byte مثلا فيكون نوعه long
بمعنى لو قمت بإسناد إحدى قيم التعداد إلى متغير من نوع int سيولد خطأ أنه لا يمكن التحويل من long إلى int
ولو عينت نوع التعداد من النوع byte فلن تتمكن من عمل تعداد يتجاوز 255 قيمة أو لن يقبل أن تعين لأي منها قيم أكبر من 255

مثال

enum Days : byte {Sat, Sun=1000, Mon, Tue, Wed, Thu, Fri};

سيولد خطأ أنه لا يمكن التحويل من int  إلى byte  لكون 1000 أكبر من مجال البايت

ليس هذا فحسب بل يجب التأكد أنك لو عينت قيمة ضمن المجال فيجب أن يكون عدد القيم التالية أقل إذا جمعته للقيم أن لا يتجاوز المجال

لأنه يقوم تلقائيا بإعطاء تسلسل من بعد أي خانة تعين قيمتها وبالتالي لو وصل إلى تسلسل يتجاوز الحد الأعلى للنوع فسيولد خطأ ويقف عند الخانة التي لا يمكن إكمال التسلسل منها إلى النهاية

مثال

    enum Days : byte { Sat, Sun = 254, Mon, Tue, Wed, Thu, Fri };

سيولد خطأ ويقف عند Thu لأن قيمتها أصبحت 256 والبايت لا يستوعبها


هي مسألة تقييد و تحديد حجز الذاكرة لا أكثر

 

لذلك أرح دماغك وأبقها بدون تقييد :)

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 27 مارس 2013 في 17:13

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3

جزاكم ربي عني خيرا الجزاء

مواضيع مشابهة