خوش برگشتید.
حالا که یه مقدار درباره Structها دیدیم، قبل از ادامه بریم یه نگاهی به Enumها بندازیم، چون دونستن اینکه
Enum چی هست خیلی مهمه.
بریم ادامه بدیم.
پس بیایید مطمئن شیم که واقعاً می‌دونیم چی هستن.
خب، بریم ببینیمشون.
Enum در واقع یه مجموعه از ثابت‌هاست.
اون‌ها تغییرناپذیرن و باید در سطح namespace قرار بگیرن.
تا کل کتابخونه بتونه ازش استفاده کنه.
و خب، یه چیزی مثل اینه که فرض کنید روزهای هفته رو داریم.
فقط هفت روز توی هفته وجود داره.
پس می‌تونیم یه Enum به اسم Day بسازیم که شامل Monday باشه،
شامل Tuesday، یا Wednesday، Thursday، Friday، Saturday و Sunday باشه.
این‌ها می‌شن روزهای ما.
و این یعنی یه Enum.
خیلی خب.
همین بود در واقع.
حالا اگه بخوایم از Enum روز استفاده کنیم، اون هفت مقدار رو داره که هیچ‌وقت تغییر نمی‌کنن، درسته؟
فقط همون هفت روز رو داریم.
پس بیایید یه Enum Day توی متد main بسازیم.
می‌خوام یه متغیر Day بسازم.
و اسمش رو می‌ذارم fr که یعنی Friday.
و مقدارش می‌شه Day.dot
و همونطور که می‌بینید، مقادیرمون اینجان و حتی اندیس هم دارن.
مثلاً Day.Friday برابر با چهار هست و Monday برابر با صفر.
خیلی خب.
فرض کنید از Friday استفاده می‌کنم.
یعنی مقدارش می‌شه چهار.
اون مقدار چهار داره.
حالا یه روز دیگه بسازیم.
مثلاً Sunday.
می‌نویسم Day.Su
حالا یه روز دیگه هم می‌سازم به اسم a که مقدارش Friday باشه.
پس Day.Fr.
و حالا با Console.WriteLine چک می‌کنیم که fr برابر با a هست یا نه.
یعنی ببینیم Friday با اون روز a یکیه یا نه.
و قبل از اینکه این کارو بکنیم، باید یه Console.ReadKey اضافه کنیم.
به این صورت.
حالا دوباره اجراش می‌کنیم.
و می‌بینیم که مقدار True برمی‌گردونه.
و این به این دلیله که این روز مقدارش Fridayه و اون یکی هم مقدارش Fridayه.
می‌تونیم همینطور مستقیماً چاپش هم بکنیم، مثلاً بنویسیم
Day.Mo یعنی Monday.
ببینیم چی چاپ می‌کنه.
و می‌بینیم True چاپ شد.
و نوشت Monday، Mo.
یعنی Monday مقدار Monday رو داد.
در واقع اون فقط یه نمایش رشته‌ایه، و می‌تونیم مقدار عددیش رو هم بگیریم.
پس با CW مقدار عددی Day.Mo یعنی Monday رو چاپ می‌کنیم.
و همونطور که می‌دونید، مقدارش صفره چون از صفر شروع می‌شه.
پس اینجا داریم True، Mo و صفر، چون اولین مقدار صفره.
بعدی می‌شه یک، دو و همینطور ادامه پیدا می‌کنه.
حالا یه تمرین کوچیک.
یه Enum بسازید که شامل ماه‌های سال باشه.
پس لطفاً خودتون امتحان کنید.
خیلی خب.
پس یه Enum به اسم Month داریم که شامل January، February، March، April، May، June، July، August، September، October،
November و December می‌شه.
پس این هم یه Enum دیگه‌ست.
و حالا می‌تونیم به همون شکل به مقادیرش دسترسی داشته باشیم.
و نه فقط توی این کلاس، بلکه توی کل namespace چون
اون رو بیرون از کلاس ساختم، در سطح namespace.
حالا فرض کنید می‌خوایم مقدار از یک شروع بشه.
یعنی January برابر با یک باشه.
پس مقدارش رو یک تنظیم می‌کنیم.
و حالا مقدار ماه رو چاپ می‌کنیم.
مثلاً می‌گیریم Month.January.
یا مثلاً می‌خوایم ببینیم February الان شده دو یا نه.
پس با cast کردن به int اون رو چاپ می‌کنیم.
یعنی تبدیلش می‌کنیم به عدد صحیح.
ببینیم چی می‌شه.
و می‌بینیم که February برابر با دو شده.
و این به خاطر اینه که اندیس از یک شروع شده.
حالا ببینیم آیا می‌تونیم مقدار دیگه‌ای رو هم عوض کنیم.
مثلاً بگیم July باید دوازدهمین ماه باشه، چون معمولاً هفتمه.
اما فرض کنیم July دوازدهمه.
پس اون رو هم روی کنسول چاپ می‌کنیم.
از همون خط کد قبلی استفاده می‌کنم، فقط February رو با July عوض می‌کنم، یا حتی بگیم August.
ببینیم مقدار August چنده.
و می‌بینیم که 13 شده.
پس می‌تونیم اندیس‌ها رو دوباره تعیین کنیم.
و شمارش از اون نقطه به بعد ادامه پیدا می‌کنه.
می‌بینید که June برابر با 6ه، July برابر با 12 و August برابر با 13 و به همین ترتیب ادامه داره.
پس به طور کلی، چیزی که باید به یاد داشته باشید اینه که Enumها برای به اشتراک‌گذاری یه مجموعه از ثابت‌ها هستن تا یه کتابخونه
یک‌دست بمونه.
پس می‌تونید ازشون توی همه کلاس‌های مختلف استفاده کنید.
و همیشه همون مقدارها رو خواهند داشت.
و دیگه لازم نیست توی هر کلاس اون ثابت‌ها رو دوباره تعریف کنید.
عالیه.
اینم از Enumها.
برگردیم سراغ Structها.
اونجا می‌بینمتون.