خرید دوره های برنامه نویسی با کیف پولت

Enumeration در سی شارپ,استفاده از Enumeration در سی شارپ,تبدیل انواع شمارشی در سی شارپ

Enumeration در سی شارپ

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

تیم تحریریه
301
0
01 آذر 1403
لینک کوتاه

آموزش 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 در سی شارپ

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

    در یک سیستم فروشگاه آنلاین، وضعیت سفارش می‌تواند از طریق 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

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “Enumeration در سی شارپ” اشتراک بزارید

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

منو