نوع داده Enum Type
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
نوع داده Enum Type
در پست آموزش انواع Data Type ها در سیشارپ، متوجه شدید که enum type ها در دسته value type ها قرار دارند.
Value type ها همگی، خانههایی در حافظه هستند که مقدار یا داده ما بصورت مستقیم داخل آنها ذخیره و نگهداری میشوند.
اما تعریف دقیق نوع داده Enum Type چیست؟
به زبان ساده، enum ها اعداد نام دار هستند؛ یعنی برای هر عدد یک نام انتخاب میکنید تا آن نام، نمایانگر آن عدد باشد.
فکر میکنم با ذکر یک مثال ساده بصورت کامل این مبحث را یاد خواهید گرفت.
فرض کنید میخواهید برنامه یک فرم ثبت سفارش فروشگاه اینترنتی را پیاده سازی کنید.
یکی از فیلدهایی که کاربر باید در این فرم بصورت الزامی آن را مشخص کند، نام استان و شهر محل سکونت است.
همانطور که میدانید، ایران دارای ۳۱ استان و همچنین در مجموع این استانها، دارای ۱۱۴۸ شهر میباشند.
زمانی که کاربر استان و شهر محل سکونت خود را انتخاب میکند، شما باید نام آن استان و شهر را در دیتابیس خود ذخیره کنید.
فرض را بر این بگیرید که کاربر از استان تهران و شهر اسلام شهر درحال تکمیل فرم سفارش در این فروشگاه اینترنتی است.
نوع داده کلمه تهران و کلمه اسلام شهر در زبان سیشارپ string و در زبان SQL از نوع NVarChar است.
هر دو نوع دادهای فوق، رشته را بصورت کاراکتری در خود ذخیره میکنند، مجموع تعداد کاراکتر تهران با اسلام شهر برابر با ۱۴ میباشد.
هر کاراکتر انگلیسی یک بایت، و هر کاراکتر غیر انگلیسی دو بایت فضا را در حافظه اشغال میکند.
در نتیجه برای ذخیره کلمه تهران و اسلام شهر در حافظه، باید ۲۸ بایت فضای حافظه را اشغال کنیم.
حال اگر تعداد کاربرانی که از شهر اسلام شهر، مشتری این فروشگاه اینترنتی میباشند را مثلا ۱۰۰۰۰ در نظر بگیریم، پس فقط مشتریان این شهر از حافظه ۲۸۰۰۰۰ بایت از حافظه را اشغال خواهند کرد.
اما این موضوع با گذر زمان، باعث بروز اتفاقات بد زیادی برای این فروشگاه اینترنتی میشود.
به همین علت بهتر است تا به جای ذخیره مستقیم نام این استانها و شهرها در دیتابیس، از نام مستعار آنان استفاده کنیم!
یعنی به جای ذخیره رشته اسلام شهر در حافظه، از یک نام مستعار با تعداد کاراکتر کمتر استفاده کنیم که با این توضیحات، میتوانیم از enum type ها استفاده کنیم.
همانطور که پیشتر گفته شد، enum type ها اعداد نام دار هستند، پس ما ابتدا ۳۱ عدد را بابت ذخیره ۳۱ استان ایران در نظر گرفته و برای هر کدام از این اعداد، یک استان را انتخاب میکنیم:
1- آذربایجان شرقی
2- آذربایجان غربی
3- اردبیل
4- اصفهان
5- البرز
6- ایلام
7- بوشهر
8- تهران
9- چهارمحال و بختیاری
10- خراسان جنوبی
11- خراسان رضوی
13- خوزستان
14- زنجان
15- سمنان
16- سیستان و بلوچستان
17- فارس
18- قزوین
19- قم
20- کردستان
21- کرمان
22- کرمانشاه
23- کهگیلویه و بویراحمد
24- گلستان
25- گیلان
26- لرستان
27- مازندران
28- مرکزی
29- هرمزگان
30- همدان
31- یزد
حال هر زمان که مشتری استان تهران را انتخاب کرد، عدد ۸ را در دیتابیس ذخیره میکنیم که باعث شده تا در حافظه فضای بیهوده اشغال نشده و به این علت سرعت برنامه در واکشی اطلاعات و به طور کلی performance آن بالا میرود.
برای تعریف یک enum، باید در محدوده NameSpace برنامه خود، کد زیر را قرار دهید:
enum ColorName
{
}
سپس در محدوده بلاک این enum باید دادههای خود را جهت ذخیره شدن وارد نمایید:
enum ColorName
{
red, blue, black
}
همانطور که در کد بالا مشاهده میکنید، ما سه مقدار red و blue و black را در محدوده بلاک enum با شناسه ColorName وارد کردهایم.
با اینکار بصورت پیش فرض از سمت چپ، نام عدد صفر Red، نام عدد یک blue و نام عدد دو black ذخیره شده است.
حال در هر کجای برنامه که نیاز به ذخیره یا استفاده رشته Red داشتید، میتوانید از عدد صفر استفاده کنید.
نکته: همانطور که متوجه شدید، این اعداد بصورت پیش فرض از صفر شروع شده و یکی یکی به آن اضافه میشود.
درصورت نیاز میتوانید این اعداد را خودتان طبق نیاز برنامه مشخص کنید:
enum ColoeName
{
red=20, blue=43, black=51
}
همانطور که مشاهده میکنید، اعداد را ما بدون هیچ منطق ریاضی برای سه مقدار فوق در نظر گرفتیم، حال اگر مقدار جدیدی را بدون عدد برای enum تعریف کنیم، سیستم آخرین عدد بزرگ را پیدا کرده و به آن یکی اضافه میکند:
enum ColoeName
{
red=20, blue=43, black=51, green
}
با توجه به توضیحات بالا، در این مثال عدد Green برابر 52 است.
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.