0Pricing
C# Academy · درس

التعدادات و[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

تحقق سريع: ما السمة التي تتيح للتعداد تمثيل خيارات قابلة للدمج باستخدام العمليات على مستوى البت، مثل Read | Write؟

مراجعة

مراجعة: استخدموا التعدادات لتمثيل ثوابت واضحة وآمنة من ناحية النوع. حلّلوا القيم وتحققوا من صحتها بأمان. وللخيارات القابلة للدمج، أضيفوا [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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الهياكل: دلالات القيمة ونمط عدم القابلية للتغيير
  2. الأنواع الشبيهة بالسجلات والمساواة القائمة على القيمة (نمط)
  3. التعدادات و[Flags]
← العودة إلى C# Academy