Enumeration در سی شارپ

تیم تحریریه 1403/09/01 0 15
لینک کوتاه https://zoheirsoftware.com/z/481158264 |
Enumeration در سی شارپ,استفاده از Enumeration در سی شارپ,تبدیل انواع شمارشی در سی شارپ

آموزش Enumeration در سی شارپ

در سی‌شارپ، Enumeration (Enum) نوع داده‌ای خاصی است که مجموعه‌ای از مقادیر ثابت و مرتبط را تعریف می‌کند.

این مقادیر معمولاً برای نمایش حالات، گزینه‌ها یا تنظیمات از پیش تعریف‌شده مانند روزهای هفته، وضعیت پرداخت، یا سطح دسترسی کاربران استفاده می‌شوند.

Enum باعث افزایش خوانایی کد، جلوگیری از خطاهای ناشی از استفاده از مقادیر ثابت (مانند اعداد یا رشته‌ها) و مدیریت بهتر مقادیر ثابت در پروژه‌ها می‌شود.

برای تعریف Enum از کلمه کلیدی enum استفاده می‌شود و مقادیر آن به صورت پیش‌فرض از عدد صفر شروع می‌شوند، اما می‌توان مقادیر خاصی نیز به آن اختصاص داد.

Enum همچنین قابلیت تبدیل به انواع عددی یا رشته‌ای و بالعکس را داراست.

 

آموزش Enumeration در سی شارپ

تعریف Enumeration در سی شارپ

برای تعریف یک enum، از کلمه کلیدی enum استفاده می‌شود. به مثال زیر توجه کنید:

enum Days
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}


در مثال بالا، یک نوع شمارشی به نام Days تعریف شده است که شامل هفت مقدار ثابت است.

مقداردهی به اعضای Enum

به طور پیش‌فرض، مقادیر enum از 0 شروع شده و به ترتیب افزایش می‌یابند.

برای تغییر مقادیر پیش‌فرض، می‌توانید به صورت دستی مقداردهی کنید:

 

enum Days
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
}


همچنین می‌توانید مقادیر غیرمتوالی یا عددی دیگر اختصاص دهید:

enum Status
{
    Inactive = 0,
    Active = 1,
    Suspended = 100,
    Deleted = 200
}


استفاده از Enumeration در سی شارپ

برای استفاده از enum، ابتدا نوع آن را مشخص کرده و سپس به مقادیر آن دسترسی پیدا می‌کنید:

 

class Program
{
    static void Main()
    {
        Days today = Days.Wednesday;
        Console.WriteLine("Today is: " + today); // Output: Today is: Wednesday
    }
}


در اینجا، متغیر today مقدار Days.Wednesday را نگه می‌دارد.

تبدیل انواع شمارشی در سی شارپ

گاهی اوقات ممکن است نیاز داشته باشید که یک مقدار enum را به نوع داده‌ای دیگر (مانند رشته یا عدد) تبدیل کنید یا برعکس.

در ادامه روش‌های مختلف تبدیل را بررسی می‌کنیم.

  • تبدیل Enum به رشته

    برای تبدیل یک مقدار enum به رشته، می‌توانید از متد ToString() استفاده کنید:
Days today = Days.Monday;
string dayName = today.ToString();
Console.WriteLine(dayName); // Output: Monday
  • تبدیل Enum به عدد

    برای تبدیل یک مقدار enum به مقدار عددی متناظر آن، می‌توانید آن را به int تبدیل کنید:

 

Days today = Days.Monday;
int dayValue = (int)today;
Console.WriteLine(dayValue); // Output: 0
  • تبدیل رشته به Enum

    برای تبدیل یک مقدار رشته‌ای به مقدار enum، می‌توانید از متد Enum.Parse() استفاده کنید:
string input = "Friday";
Days selectedDay = (Days)Enum.Parse(typeof(Days), input);
Console.WriteLine(selectedDay); // Output: Friday
  • تبدیل عدد به Enum

    برای تبدیل یک مقدار عددی به مقدار enum، کافی است عدد را به نوع enum موردنظر تبدیل کنید:

 

int dayValue = 2;
Days selectedDay = (Days)dayValue;
Console.WriteLine(selectedDay); // Output: Wednesday

 

 

تبدیل انواع شمارشی در سی شارپ
بررسی اعتبار مقادیر 

در برخی موارد، ممکن است نیاز داشته باشید بررسی کنید که آیا یک مقدار معتبر برای یک نوع enum است یا خیر.

برای این کار می‌توانید از متد () Enum.IsDefined استفاده کنید:

 

int inputValue = 5;
bool isValid = Enum.IsDefined(typeof(Days), inputValue);
Console.WriteLine(isValid); // Output: True

این متد بررسی می‌کند که آیا مقدار 5 در نوع شمارشی Days تعریف شده است یا خیر.

حلقه زدن روی مقادیر Enum

برای دریافت و استفاده از تمامی مقادیر یک enum، می‌توانید از متد Enum.GetValues() استفاده کنید:

 

foreach (Days day in Enum.GetValues(typeof(Days)))
{
    Console.WriteLine(day);
}


خروجی این کد تمام مقادیر تعریف شده در Days را چاپ می‌کند.

ترکیب Enum با دستور Switch

یکی از کاربردهای رایج enum، استفاده از آن همراه با دستور switch برای کنترل جریان برنامه است:

Days today = Days.Friday;

switch (today)
{
    case Days.Monday:
        Console.WriteLine("Start of the work week!");
        break;
    case Days.Friday:
        Console.WriteLine("End of the work week!");
        break;
    default:
        Console.WriteLine("It's a regular day.");
        break;
}

Enum به عنوان فلگ (Flags)

گاهی اوقات نیاز است که از Enum به صورت ترکیبی استفاده کنید. برای این کار می‌توانید از ویژگی Flags استفاده کنید. این ویژگی امکان ترکیب چند مقدار enum را فراهم می‌کند.

  • تعریف Enum با Flags

برای تعریف یک enum به صورت فلگ، از [Flags] استفاده کنید:

 

[Flags]
enum Permissions
{
    None = 0,
    Read = 1,
    Write = 2,
    Execute = 4,
    FullControl = Read | Write | Execute
}
  • استفاده از Enum به صورت فلگ

    در این حالت می‌توانید چند مقدار را ترکیب کنید:
Permissions userPermissions = Permissions.Read | Permissions.Write;

Console.WriteLine(userPermissions); // Output: Read, Write

// بررسی دسترسی خاص
bool canWrite = (userPermissions & Permissions.Write) == Permissions.Write;
Console.WriteLine("Can Write: " + canWrite); // Output: Can Write: True

مزایای استفاده از Enumeration

  • خوانایی بیشتر کد

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

    امکان استفاده از مقادیر خارج از تعریف enum وجود ندارد.
  • قابلیت گسترش

    به راحتی می‌توان مقادیر جدیدی به enum اضافه کرد.

 

مزایای استفاده از Enumeration

استفاده‌های پیشرفته از Enum

  •  ذخیره مقادیر Enum در پایگاه داده

    در بسیاری از پروژه‌های واقعی، نیاز است که مقدار یک نوع شمارشی در پایگاه داده ذخیره شود. برای این کار، معمولاً مقدار عددی متناظر با enum ذخیره می‌شود. سپس هنگام بازیابی داده، مقدار ذخیره‌شده به enum تبدیل می‌شود.

مثال:

enum UserRole
{
    Admin = 1,
    Editor = 2,
    Viewer = 3
}

// ذخیره در پایگاه داده
int roleValue = (int)UserRole.Editor; // ذخیره مقدار 2 در پایگاه داده

// بازیابی از پایگاه داده
UserRole userRole = (UserRole)roleValue; // تبدیل مقدار عددی به Enum
Console.WriteLine(userRole); // Output: Editor

 

  • استفاده از Enum در APIها

    در طراحی APIها، Enum می‌تواند برای محدود کردن ورودی‌های معتبر استفاده شود. این کار باعث افزایش دقت API و جلوگیری از ارسال مقادیر نامعتبر می‌شود.

مثال:

public enum PaymentStatus
{
    Pending,
    Completed,
    Failed
}

public class Payment
{
    public int PaymentId { get; set; }
    public PaymentStatus Status { get; set; }
}

// مثال از ارسال وضعیت پرداخت به API
Payment payment = new Payment
{
    PaymentId = 123,
    Status = PaymentStatus.Completed
};
  • مقدار پیش‌فرض Enum

    مقدار پیش‌فرض هر Enum برابر با اولین مقدار تعریف‌شده در آن است (معمولاً مقدار 0):
enum Colors
{
    Red,
    Green,
    Blue
}

Colors defaultColor = default(Colors);
Console.WriteLine(defaultColor); // Output: Red


برای تغییر مقدار پیش‌فرض، باید مقدار صفر را به مقدار دلخواه خود اختصاص دهید:

enum Colors
{
    Unknown = 0,
    Red = 1,
    Green = 2,
    Blue = 3
}


بهترین شیوه‌ها در استفاده از Enum

استفاده از نام‌های معنادار: از نام‌هایی استفاده کنید که نشان‌دهنده مفهوم واقعی مقدار باشند.

✅ درست:

enum OrderStatus
{
    Pending,
    Shipped,
    Delivered,
    Cancelled
}


❌ اشتباه:

 

enum Status
{
    S1,
    S2,
    S3,
    S4
}


استفاده از [Flags] برای Enumهای ترکیبی: اگر نیاز به مقادیر ترکیبی دارید، از ویژگی [Flags] استفاده کنید.

اختصاص مقادیر صریح: اگر Enum در پایگاه داده ذخیره می‌شود، مقادیر آن را به صورت صریح تعریف کنید تا در آینده تغییر نکنند.

تعریف مقدار پیش‌فرض: همیشه یک مقدار پیش‌فرض (مانند None یا Unknown) داشته باشید.

 

 

 

 

"با دوره‌های تخصصی سی شارپ ما، مهارت‌هایی کسب کنید که شما را به یک برنامه‌نویس حرفه‌ای و مورد تقاضا در بازار تبدیل می‌کند!"

برای آموزش کامل و جامع Enumeration در سی شارپ از اینجا وارد بخش دوره آموزشی ما شوید

 

 

 

مثال‌ های کاربردی و پروژه‌محور از Enumeration در سی شارپ

  • سیستم مدیریت وضعیت سفارش

    در یک سیستم فروشگاه آنلاین، وضعیت سفارش می‌تواند از طریق Enum مدیریت شود.
    enum OrderStatus
    {
        Pending,    // در انتظار
        Processing, // در حال پردازش
        Shipped,    // ارسال شده
        Delivered,  // تحویل داده شده
        Cancelled   // لغو شده
    }
    
    class Order
    {
        public int OrderId { get; set; }
        public OrderStatus Status { get; set; }
    
        public void PrintStatus()
        {
            Console.WriteLine($"Order #{OrderId} is currently: {Status}");
        }
    }
    
    // استفاده در پروژه:
    Order order = new Order
    {
        OrderId = 101,
        Status = OrderStatus.Pending
    };
    
    order.PrintStatus(); // Output: Order #101 is currently: Pending
    
  •  مدیریت سطوح دسترسی کاربران

    در یک سیستم مدیریت کاربران، می‌توان دسترسی‌ها را با Enum تعریف کرد.
enum Role
{
    Guest,     // مهمان
    User,      // کاربر عادی
    Moderator, // ناظر
    Admin      // مدیر
}

class User
{
    public string UserName { get; set; }
    public Role UserRole { get; set; }

    public void PrintRole()
    {
        Console.WriteLine($"{UserName} has the role: {UserRole}");
    }
}

// استفاده در پروژه:
User user = new User
{
    UserName = "JohnDoe",
    UserRole = Role.Admin
};

user.PrintRole(); // Output: JohnDoe has the role: Admin
دوره های مرتبط
آموزش برنامه نویسی سی شارپ,آموزش پروژه محور سی شارپ,آموزش مقدماتی تا پیشرفته سی شارپ,طراحی نرم افزار تحت ویندوز

آموزش برنامه نویسی سی شارپ

زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.

999,000 تومان

2k بازدید
مشاهده

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.