enum یکی از امکانات متداول ی هست که در اغلب برنامه ها استفاده می شه . در حالی که تعریف و استفاده ش خیلی ساده به نظر می رسه ، چیزهای زیادی در موردش باید بدانیم ، و این موضوع یکی از اونهاست . چگونه در c# یک enum رو مرور کنیم ؟ یا آیا می توانید شما یه حلقه روی مقادیر enum بزنید ؟ چند راه برای اینکار وجود دارد . کلاس Enum  و متد Enum.GetNames()  کلاس پایه برای شمارش فراهم می کند ، که برای ایجاد یه آرایه ای از نام ها و برگرداندن یه آرایه رشته ای از نام ها استفاده میشه .

اجازه بدید با یه مثال بریم جلو . فرض کنید شما Enum زیر رو دارید :

حالا با استفاده از Enum.GetNames()  می تونید Enum رو مانند زیر مرور کنید .متد Enum.GetNames()، به  type  enum به عنوان پارامتر نیاز داره، که می تونید با عبارت typeof براش ارسال کنید . که یه آرایه ای از اسم های موجود در enum رو مرور می کنه .

که اگر اجراش کنید خروجی زیر رو خواهید داشت :

 

ضمنا می تونید از Enum.GetValues() استفاده کنید و آیتم ها رو مرور کنید  :

و همان خروجی را تولید خواهد کرد :

 

هر دو کار می کنند ، اما الان سوال اینه که چه تفاوتی بین Enum.GetNames() و Enums.GetValues() وچود دارد ؟

GetNames()  یه آرایه رشته ای از اسم ها ی آیتم ها در enum بر می گردونه در حالی که GetValues()  یه آرایه ای از مقادیر هر آیتم در enum بر می گردونه.

وقتی ما enum رو تعریف می کنیم ، همه ی آیتم های enum یک مقداری که به صورت پیش فرض از صفر شروع میشه خواهند داشت. برای مثال ، monday مقدارش صفره و به طور مشابه Friday مقدار 4 رو می گیره .

بنابراین ، GetNames() یک آرایه رشته ای بر می گردونه که شامل آیتم های "Monday" و ... هستش و GetValues() یه آرایه int شامل 0,1,2,... بر می گردونه . شما می تونید به سادگی مقادیر رو در قالب  عدد ببینید :