التعدادات و[Flags]
عرّف التعدادات بقيم وأنواع أساسية صريحة، وحوّلها وحلّلها بأمان، ونمذج الخيارات القابلة للدمج باستخدام [Flags].
التعدادات و[Flags] درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
نظرة عامة على التعدادات
الهدف: استخدام التعدادات للثوابت المسماة، واستخدام [Flags] للخيارات القابلة للدمج.
- تربط الأسماء بالأرقام
- النوع الأساسي (int افتراضيًا)
- إجراء التحويل والتحليل والتحقق
- الدمج باستخدام العمليات على مستوى البتات مع [Flags]
التعداد الأساسي
التعدادات ثوابت مُسمّاة. يمكنكم طباعة الاسم أو تحويله إلى الرقم الأساسي.
using System;
public enum OrderStatus
{
Pending = 0,
Processing = 1,
Shipped = 2,
Delivered = 3,
Cancelled = 4
}
public class Program
{
public static void Main(string[] args)
{
OrderStatus s = OrderStatus.Processing;
Console.WriteLine("Status = " + s);
Console.WriteLine("Numeric = " + (int)s);
}
}
النوع الأساسي والتحويل
يمكنكم اختيار نوع أساسي (short، byte، وغيرهما). لا يتحقق التحويل من الأرقام من صحة القيمة.
using System;
// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
Ok = 200,
NotFound = 404
}
public class Program
{
public static void Main(string[] args)
{
short code = (short)HttpCode.Ok; // cast to number
HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
Console.WriteLine("code=" + code);
Console.WriteLine("fromNum=" + fromNum);
}
}
تحليل القيم والتحقق منها
استخدموا Enum.TryParse للقراءة من النص، وEnum.IsDefined للتحقق من القيم الرقمية.
using System;
public enum Color
{
Red = 1, Green = 2, Blue = 3
}
public class Program
{
public static void Main(string[] args)
{
Color c;
bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
Console.WriteLine("Parsed? " + ok + " value=" + c);
// Validate a numeric value before casting
int raw = 4;
bool valid = Enum.IsDefined(typeof(Color), raw);
Console.WriteLine("Is 4 a defined Color? " + valid);
}
}
[Flags] عمليًا
أضيفوا [Flags] وعيّنوا قيمًا من قوى العدد اثنين. ادمجوا باستخدام |، واختبروا باستخدام &، وأزيلوا باستخدام ~ و&.
using System;
[Flags]
public enum FileAccessMode
{
None = 0,
Read = 1, // 0001
Write = 2, // 0010
Exec = 4 // 0100
}
public class Program
{
public static void Main(string[] args)
{
FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
Console.WriteLine("Mode = " + m); // prints "Read, Write"
// Test a flag (two common patterns)
bool canWrite = (m & FileAccessMode.Write) != 0;
Console.WriteLine("Can write? " + canWrite);
// Remove a flag
m = m & ~FileAccessMode.Write;
Console.WriteLine("After remove: " + m);
}
}
نصائح حول التعدادات
نصائح:
- عيّنوا قيمًا صريحة وحافظوا على ثباتها.
- بالنسبة إلى [Flags]، استخدموا قوى العدد اثنين وأضيفوا None = 0.
- تحققوا من صحة المدخلات باستخدام Enum.TryParse/IsDefined.
- تجنبوا استخدام الأعداد الصحيحة الخام في واجهات برمجة التطبيقات العامة؛ وفضّلوا التعدادات.
معنى سمة Flags
مراجعة
مراجعة: استخدموا التعدادات لتمثيل ثوابت واضحة وآمنة من ناحية النوع. حلّلوا القيم وتحققوا من صحتها بأمان. وللخيارات القابلة للدمج، أضيفوا [Flags] واستخدموا العمليات على مستوى البت لتعيين العلامات واختبارها وإزالتها.
الأسئلة الشائعة
هل درس «التعدادات و[Flags]» مجاني؟
نعم — نص درس «التعدادات و[Flags]» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «التعدادات و[Flags]»؟
عرّف التعدادات بقيم وأنواع أساسية صريحة، وحوّلها وحلّلها بأمان، ونمذج الخيارات القابلة للدمج باستخدام [Flags]. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «التعدادات و[Flags]»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الهياكل: دلالات القيمة ونمط عدم القابلية للتغيير
- الأنواع الشبيهة بالسجلات والمساواة القائمة على القيمة (نمط)
- التعدادات و[Flags]