PDA

View Full Version : سوال: طرح کلی enum ها



drsina
یک شنبه 22 دی 1392, 22:45 عصر
سلام .
اگر یه متغیر enum داشته باشیم ، مقدار گرفتن حافظه توسط این متغیر به چه صورته ؟! (یعنی چند بایته )

sagggad
یک شنبه 22 دی 1392, 22:50 عصر
فک کنم بستگی به مقادیری داره که دخلش قرار بدی...

drsina
یک شنبه 22 دی 1392, 22:55 عصر
فکر نکنم . آخه مسئله اینجاست که هر چیزی نمیشه توش قرار داد .

drsina
یک شنبه 22 دی 1392, 23:10 عصر
من دقیقا منظورشو از distinct یعنی متمایز ، نمی فهمم :
The enum keyword is used to declare an enumeration, a distinct type that consists of a set of named constants called the enumerator list.



An enumeration type (also named an enumeration or an enum) provides an efficient way to define a set of named integral constants that may be assigned to a variable.


http://msdn.microsoft.com/en-us/library/cc138362.aspx
http://msdn.microsoft.com/en-us/library/sbbt4032.aspx

Mousavmousab
دوشنبه 23 دی 1392, 11:13 صبح
سلام
توی enum هیچ وقت مقادیر تکراری نیست دیگه درسته ؟ می خواد بگه یک نوعی که شامل تعدادی عناصر که "تکراری نیست".

من این طور متوجه شدم.

Mousavmousab
دوشنبه 23 دی 1392, 11:21 صبح
یادم رفت بگم : اندازه آن چقدر است؟ بستگی داره به صورت پیش فرض int است. هر عناصر برابر یک عدد و از 0 شروع میشه:

مثلاٌ من یک مثال می زنم که برای تعیین سطح کاربران استفاده میشه

public partial class Form1 : Form
{
enum UserLevel { Admin, Level1, Level2, Level3 }
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
UserLevel u = UserLevel.Admin;
if (u == UserLevel.Admin)
{
// let the program to login and dive into admin section
}
else if (u == UserLevel.Level1)
{
// let the user to do something as level1
}
else
{
// send message to user which it is not a Registered user.
}
}



از آنجایی که ما می دونیم تعداد سطوح ما تا short کفایت می کنه ، می تونیم به این صورت بنویسیم تا نوعش بشه Short و زیاد فضا اشغال نکنه



public partial class Form1 : Form
{
enum UserLevel:short { Admin, Level1, Level2, Level3 }
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
UserLevel u = UserLevel.Admin;
if (u == UserLevel.Admin)
{
// let the program to login and dive into admin section
}
else if (u == UserLevel.Level1)
{
// let the user to do something as level1
}
else
{
// send message to user which it is not a Registered user.
}
}