تعدادات Flags والدمج على مستوى البت
ادمجوا قيم التعداد باستخدام السمة Flags
تعدادات Flags والدمج على مستوى البت درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
تعدادات الرايات
يمثل تعداد الرايات مجموعة من الخيارات. ميّزه بالسمة [Flags] وامنح كل عضو قوة مختلفة للعدد اثنين.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
Console.WriteLine(a);
}
}قوى العدد اثنين
يجب أن تشغل كل راية بتًا فريدًا: 1 و2 و4 و8 و16. ويسمح ذلك بدمج القيم دون تداخل.
using System;
[Flags]
enum Perm { Read = 1, Write = 2, Delete = 4, Share = 8 }
class Program {
static void Main() {
Console.WriteLine((int)Perm.Share);
}
}الدمج باستخدام OR
استخدم OR على مستوى البتات (|) لدمج الرايات في قيمة واحدة.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Execute;
Console.WriteLine((int)a);
}
}التحقق باستخدام HasFlag
تختبر HasFlag ما إذا كانت قيمة مدمجة تحتوي على راية محددة.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
Console.WriteLine(a.HasFlag(Access.Write));
Console.WriteLine(a.HasFlag(Access.Execute));
}
}التحقق باستخدام AND على مستوى البتات
يمكنك أيضًا اختبار الراية باستخدام & ومقارنتها بقيمة غير صفرية، وهو أسلوب سريع وصريح.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
bool canWrite = (a & Access.Write) != 0;
Console.WriteLine(canWrite);
}
}إزالة راية
أزل الراية باستخدام AND مع متممتها: a &= ~Access.Write.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
a &= ~Access.Write;
Console.WriteLine(a);
}
}إضافة راية
أضف الراية بإجراء OR لها مع القيمة. وإذا كانت موجودة أصلًا، فلن يتغير شيء.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read;
a |= Access.Execute;
Console.WriteLine(a);
}
}تبديل راية
يقلب XOR (^) حالة الراية إلى التشغيل أو الإيقاف في خطوة واحدة.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2 }
class Program {
static void Main() {
Access a = Access.Read;
a ^= Access.Write;
Console.WriteLine(a);
a ^= Access.Write;
Console.WriteLine(a);
}
}أهمية [Flags]
تغير السمة [Flags] طريقة عمل ToString لعرض الأسماء المدمجة بدلًا من رقم واحد.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Execute;
Console.WriteLine(a);
}
}تعريف الأعضاء المدمجة
يمكنك تعريف أعضاء مساعدة تمثل مجموعات من القيم، مثل All.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4, All = Read | Write | Execute }
class Program {
static void Main() {
Console.WriteLine((int)Access.All);
}
}الرايات عمليًا
تمثل الرايات الأذونات ومفاتيح الميزات ومجموعات الخيارات بكفاءة ضمن عدد صحيح واحد.
using System;
[Flags]
enum Feature { None = 0, Dark = 1, Beta = 2, Sync = 4 }
class Program {
static void Main() {
Feature f = Feature.Dark | Feature.Sync;
Console.WriteLine(f.HasFlag(Feature.Beta));
}
}تحقق سريع
اختبر مدى فهمك لتعدادات الرايات.
مراجعة
يمنح تعداد [Flags] كل عضو قوة مختلفة للعدد اثنين، لذلك تُدمج الرايات باستخدام | ويُتحقق منها باستخدام HasFlag أو &. وتضيفها باستخدام |=، وتزيلها باستخدام &= ~، وتبدل حالتها باستخدام ^=.
تجعل السمة ToString يطبع الأسماء المدمجة، ويمكنك تعريف أعضاء مساعدة مثل All.
الأسئلة الشائعة
هل درس «تعدادات Flags والدمج على مستوى البت» مجاني؟
نعم — نص درس «تعدادات Flags والدمج على مستوى البت» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «تعدادات Flags والدمج على مستوى البت»؟
ادمجوا قيم التعداد باستخدام السمة Flags تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تعدادات Flags والدمج على مستوى البت»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف التعدادات واستخدامها
- تعدادات Flags والدمج على مستوى البت
- تحويلات التعداد وتحليله
- التكرار على قيم التعداد