C# التعداد (التعداد) مع مثال
⚡ ملخص ذكي
تُعرّف التعدادات في لغة C# مجموعةً مُسمّاةً من القيم العددية الثابتة، مثل أيام الأسبوع، مما يُسهّل قراءة الكود وصيانته. تُصرّح الكلمة المفتاحية enum عن هذه الثوابت الثابتة مرةً واحدةً لإعادة استخدامها في جميع أنحاء البرنامج.

التعداد C#
يتم استخدام التعداد في أي لغة برمجة لتحديد مجموعة ثابتة من القيم. على سبيل المثال، يمكن تعريف أيام الأسبوع على أنها تعداد واستخدامها في أي مكان في البرنامج. في C#، يتم تعريف التعداد بمساعدة الكلمة الأساسية "التعداد".
دعونا نرى مثالاً لكيفية استخدام الكلمة الأساسية "enum".
في مثالنا، سنحدد تعدادًا يسمى الأيام، والذي سيتم استخدامه لتخزين أيام الأسبوع. لكل مثال، سنقوم بتعديل الوظيفة الرئيسية فقط في ملف Program.cs الخاص بنا.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code تفسير:-
- "التعداد" نوع البيانات تم تحديده للإعلان عن التعداد. اسم التعداد هو أيام. يتم تحديد كافة أيام الأسبوع كقيم التعداد.
- وأخيرًا، يتم استخدام الدالة console.write لعرض إحدى قيم التعداد.
إذا تم إدخال الكود أعلاه بشكل صحيح وتم تنفيذ البرنامج بنجاح، سيتم عرض الإخراج التالي.
الإخراج:
من المخرجات، يمكنك أن ترى أن قيمة "Sun" للعدد معروضة في وحدة التحكم.
لماذا نستخدم التعدادات في لغة C#؟
تُسهّل التعدادات قراءة البرنامج، وتجعله أكثر أمانًا، وأبسط في الصيانة. فبدلاً من نثر أرقام غير مُفسّرة، تُسمى أحيانًا بالأرقام السحرية، في جميع أنحاء الكود، يُعطي التعداد لكل قيمة اسمًا وصفيًا يُبيّن الغرض منها.
- قراءة: إن اسمًا مثل Days.Fri أكثر وضوحًا بكثير من الرقم 5، لذلك فإن أي شخص يقرأ الشفرة يفهم المعنى على الفور.
- أمان النوع: لا يمكن للمتغير المُعلن عنه بنوع تعدادي أن يحتوي إلا على عضو واحد من الأعضاء المُعرّفة، مما يمنع تسرب القيم غير الصالحة.ping في.
- قابلية الصيانة: توجد الثوابت ذات الصلة في مكان واحد، لذا فإن إضافة قيمة أو إعادة تسميتها تُحدّث البرنامج بأكمله بشكل متسق.
- ربط البيانات: يمكن لأطر العمل مثل WPF و ASP.NET ربط تعداد بقائمة منسدلة، مما يجعل التعدادات مفيدة لبناء واجهات المستخدم.
لأن المترجم يتحقق من كل عملية إسناد مقابل الأعضاء المسموح بها، فإن التعدادات تساعد أيضًا في اكتشاف الأخطاء مبكرًا، قبل تشغيل البرنامج.
تعيين قيم مخصصة لنوع بيانات تعدادي في لغة C#
افتراضيًا، تُعيّن لغة C# القيمة 0 لأول عنصر في التعداد، ثم تزيد قيمة كل عنصر لاحق بمقدار واحد. في تعداد الأيام المذكور أعلاه، قيمة الأحد تساوي 0، وقيمة الاثنين تساوي 1، وقيمة السبت تساوي 6. يمكنك تجاوز هذه القيم الافتراضية بتعيين أرقام صريحة.
- القيم الصريحة: كتابة enum Level {Low = 1, Medium = 5, High = 10} تحدد لكل عضو رقمًا مختارًا بدلاً من التسلسل الافتراضي.
- مهمة جزئية: إذا قمت بتعيين قيمة لبعض الأعضاء فقط، فإن المترجم يستمر في الترقيم من آخر قيمة تم تعيينها للأعضاء التالية.
- النوع الأساسي: يقوم نظام التعداد بتخزين أعضائه كأعداد صحيحة افتراضيًا، ولكن يمكنك الاعتماد على البايت أو الأعداد القصيرة أو الطويلة لتوفير الذاكرة أو توسيع النطاق.
تُعد القيم المخصصة مفيدة عندما يجب أن تتطابق الأرقام مع نظام خارجي، مثل رموز قواعد البيانات أو ثوابت البروتوكول، بحيث يعكس التعداد البيانات الحقيقية تمامًا.
كيفية تحويل قيم التعداد في لغة C# إلى أعداد صحيحة وسلاسل نصية وعلامات (Flags)
تحتاج لغة C# في كثير من الأحيان إلى تحويل قيمة من نوع enum إلى شكل آخر، مثل تخزينها كرقم أو قراءتها من نص. تتم هذه التحويلات بعدة طرق قياسية.
- تحويل القيم العددية إلى أعداد صحيحة: يؤدي التحويل الصريح مثل (int)Days.Wed إلى إرجاع العدد الصحيح الأساسي، وهو أمر مفيد للتخزين أو العمليات الحسابية.
- تحويل عدد صحيح إلى تعداد: التحويل في الاتجاه المعاكس، على سبيل المثال (أيام)3، يحول الرقم مرة أخرى إلى عضو التعداد المطابق.
- تحويل السلسلة إلى تعداد: تقوم الدالة Enum.Parse والدالة الأكثر أمانًا Enum.TryParse بتحويل اسم مثل "Fri" إلى عضو Days.Fri دون طرح خطأ عند وجود نص غير صالح.
- تحويل القيم العددية إلى سلسلة نصية: يؤدي استدعاء ToString على أي عضو إلى إرجاع اسمه، لذا فإن Days.Sun.ToString() ينتج "Sun" للعرض أو التسجيل.
- قائمة الأعضاء: تقوم Enum.GetValues و Enum.GetNames بإرجاع كل قيمة أو اسم، مما يساعد عند ملء القوائم أو التحقق من صحة الإدخال.
عندما يجب أن يمثل التعداد مجموعة من الخيارات بدلاً من خيار واحد، قم بتطبيق سمة Flags وأعطِ كل عنصر قوة من قوى العدد اثنين، مثل 1 و2 و4 و8. يمكنك بعد ذلك دمج العناصر باستخدام عامل التشغيل OR الثنائي واختبار خيار معين باستخدام طريقة HasFlag.
تتيح تقنيات التحويل هذه نقل التعداد بسلاسة بين الأسماء المقروءة والأرقام المخزنة ومجموعات العلامات المدمجة، مع الحفاظ علىping بقية البرنامج آمنة من حيث الكتابة وسهلة المتابعة.


