دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
Enumeration در سی شارپ
1403/09/01 -
پارتیشن بندی در پایگاه داده اوراکل
1403/08/30 -
Delegates در سی شارپ
1403/08/29 -
انواع ایندکس در پایگاه داده اوراکل
1403/08/28 -
سربارگذاری متدها در سی شارپ
1403/08/27
Enumeration در سی شارپ
آموزش Enumeration در سی شارپ
در سیشارپ، Enumeration (Enum) نوع دادهای خاصی است که مجموعهای از مقادیر ثابت و مرتبط را تعریف میکند.
این مقادیر معمولاً برای نمایش حالات، گزینهها یا تنظیمات از پیش تعریفشده مانند روزهای هفته، وضعیت پرداخت، یا سطح دسترسی کاربران استفاده میشوند.
Enum باعث افزایش خوانایی کد، جلوگیری از خطاهای ناشی از استفاده از مقادیر ثابت (مانند اعداد یا رشتهها) و مدیریت بهتر مقادیر ثابت در پروژهها میشود.
برای تعریف Enum از کلمه کلیدی enum استفاده میشود و مقادیر آن به صورت پیشفرض از عدد صفر شروع میشوند، اما میتوان مقادیر خاصی نیز به آن اختصاص داد.
Enum همچنین قابلیت تبدیل به انواع عددی یا رشتهای و بالعکس را داراست.
تعریف 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 اضافه کرد.
استفادههای پیشرفته از 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
دوره های مرتبط
آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.