عنوان:

‫enums و enum flags در #C


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۰۳ ۰۸:۲۶
آدرس: www.dntips.ir
این مقاله نحوه استفاده از enums و enum flags را برای مدیریت تعداد فزاینده‌ای از گزینه‌ها، با استفاده از قیاس یک همبرگر فروشی، توضیح می‌دهد. این مطلب تکامل از پرچم‌های بولی به enums و در نهایت به enum flags را نشان می‌دهد و مزایای هر رویکرد را برجسته می‌کند.

مشکل: مدیریت گزینه‌های متعدد

  • در ابتدا، پرچم‌های بولی برای هر چاشنی (مثلاً TomatoSauce، Mayonnaise) استفاده می‌شوند.
  • با افزایش تعداد گزینه‌ها، این روش دست‌وپاگیر می‌شود.
  • کدهای عدد صحیح یا رشته‌ای پیشنهاد می‌شوند، اما فاقد امنیت نوع و خوانایی هستند.

راه حل: Enums

  • Enums ثابت‌های نامگذاری شده‌ای را با مقادیر عددی زیربنایی ارائه می‌دهند.
  • آنها خوانایی و امنیت نوع را بهبود می‌بخشند.

مشکل: انتخاب گزینه‌های متعدد

  • Enums استاندارد فقط اجازه می‌دهند یک مقدار در یک زمان انتخاب شود.

راه حل: Enum Flags

  • Enum flags از عملیات بیتی برای اجازه انتخاب چندگانه استفاده می‌کنند.
  • مقادیر آن توان‌های 2 هستند (1، 2، 4، 8 و غیره).
  • از ویژگی [Flags] برای نشان دادن اینکه enum برای عملیات بیتی در نظر گرفته شده‌است، استفاده می‌شود.

نکات کلیدی

  • ویژگی [Flags] یک قرارداد است، نه یک الزام برای عملیات بیتی.
  • مقادیر تکراری enum توسط کامپایلر مجاز هستند، اما باید از آنها اجتناب شود.
  • مقادیر عدد صحیح را می‌توان مستقیماً به متغیرهای enum اختصاص داد، اما اعتبار سنجی با استفاده از Enum.IsDefined توصیه می‌شود.


مشاهده مطلب اصلی