درک مفهوم Enum در سی شارپ

چهارشنبه 6 خرداد 1394

Enumها نوع داده شمارشی ساده هستند و اگر ما میخواهیم تعدادی مقادیر ثابت که با یکدیگر ارتباط دارند در برنامه خود داشته باشیم از Enum ها استفاده میکنیم Enum ها باعث خوانایی بیشتر برنامه میشوند برای استفاده Enum ها از فضای نام System.Collections استفاده میکنیم

درک مفهوم  Enum  در سی شارپ

Enumها نوع داده شمارشی ساده هستند  و  اگر ما بخواهیم  تعدادی مقادیر ثابت که با یکدیگر ارتباط دارند در برنامه خود داشته باشیم از Enum ها استفاده میکنیم .Enum ها  باعث خوانایی بیشتر برنامه میشوند برای  استفاده از  Enum ها  از  فضای نام System.Collections استفاده میکنیم

 اکنون یک پروژه از نوع Console Application ایجاد میکنیم

مثال اول :

enum Enum_Name  
{  
    Sun, Mon, Tue, Wed, Thu, Fri, Sat  
};  
  
static void Main(string[] args)  
{  
    Console.WriteLine(Enum_Name.Sun);  
    Console.WriteLine(Enum_Name.Mon);  
    Console.WriteLine(Enum_Name.Tue);  
    Console.WriteLine(Enum_Name.Wed);  
    Console.WriteLine(Enum_Name.Thu);  
    Console.WriteLine(Enum_Name.Fri);  
    Console.WriteLine(Enum_Name.Sat);  
    Console.WriteLine((int) Enum_Name.Sun);  
    Console.WriteLine((int) Enum_Name.Mon);  
    Console.WriteLine((int) Enum_Name.Tue);  
    Console.WriteLine((int) Enum_Name.Wed);  
    Console.WriteLine((int) Enum_Name.Thu);  
    Console.WriteLine((int) Enum_Name.Fri);  
    Console.WriteLine((int) Enum_Name.Sat);  
    Console.ReadLine();  
}


برای تعریف Enum باید از کلمه کلیدی آن (enum) استفاده کنیم و همچنین برای استفاده از داده های آن در برنامه ُ کافی است که اسمEnum   به همراه  "." و داده ی موردنظر را وارد کنیم.

روش معمول  برای نمایش مقدار عددی در Enum,باید آن را به  نوع int  تبدیل کنیم.

این نکته را هم یاد اوری کنم که enum ها از 0 شماره گذاری می شوند و به ترتیب  به آنها یک واحد اضافه میشود

Console.WriteLine: برای چاپ کردن مقادیر در کنسول است

Console.ReadLine(); : برای خواندن مقادیر در کنسول است

 خروجی برنامه بالا

شاید شما بخواهید در برنامه از یک  عدد به خصوصی شروع کنید و به صورت داینامیک اعداد بعد از آن یک واحد اضافه شوند. برای این کار هم میتوان از enum  ها استفاده کرد.

enum Enum_Name  
{  
    Sun, Mon, Tue, Wed = 100, Thu, Fri, Sat  
};  
  
static void Main(string[] args)  
{  
    Console.WriteLine((int) Enum_Name.Sun);  
    Console.WriteLine((int) Enum_Name.Mon);  
    Console.WriteLine((int) Enum_Name.Tue);  
    Console.WriteLine((int) Enum_Name.Wed);  
    Console.WriteLine((int) Enum_Name.Thu);  
    Console.WriteLine((int) Enum_Name.Fri);  
    Console.WriteLine((int) Enum_Name.Sat);  
    Console.ReadLine();  
}

مثال 3

 اگر همان طور که  در مثال قبل توضیح دادم شما میخواهید از یک  عدد خاصی در برنامه استفاده کنید  کافی  است از enum استفاده کنیم. ولی اگر این اعداد بزرگ باشند. هنگام تبدیل به int به error   زیر بر میخوریم برای حل این مشکل کافی است یه جای تبدیل به int  نوع از long  استفاده کنیم.

    enum Enum_Name  
    {  
        Sun, Mon, Tue, Wed = 10000000000, Thu, Fri, Sat  
    };  
      
    static void Main(string[] args)  
    {  
        Console.WriteLine((int) Enum_Name.Sun);  
        Console.WriteLine((int) Enum_Name.Mon);  
        Console.WriteLine((int) Enum_Name.Tue);  
        Console.WriteLine((int) Enum_Name.Wed);  
        Console.WriteLine((int) Enum_Name.Thu);  
        Console.WriteLine((int) Enum_Name.Fri);  
        Console.WriteLine((int) Enum_Name.Sat);  
        Console.ReadLine();  
    }  

خروجی کد بالا

حال با استفاده از نوع long خطای بالا برطرف می شود.

    enum Enum_Name: long  
    {  
        Sun, Mon, Tue, Wed = 10000000000, Thu, Fri, Sat  
    };  
      
    static void Main(string[] args)  
    {  
        Console.WriteLine((int) Enum_Name.Sun);  
        Console.WriteLine((int) Enum_Name.Mon);  
        Console.WriteLine((int) Enum_Name.Tue);  
        Console.WriteLine((long) Enum_Name.Wed);  
        Console.WriteLine((long) Enum_Name.Thu);  
        Console.WriteLine((long) Enum_Name.Fri);  
        Console.WriteLine((long) Enum_Name.Sat);  
        Console.ReadLine();  
    }   

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 13k بازدید
  • 7 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید