WEBVTT

00:00.080 --> 00:00.830
خوش برگشتید.

00:00.830 --> 00:07.370
حالا که یه مقدار درباره Structها دیدیم، قبل از ادامه بریم یه نگاهی به Enumها بندازیم، چون دونستن اینکه

00:07.400 --> 00:09.140
Enum چی هست خیلی مهمه.

00:09.140 --> 00:09.770
بریم ادامه بدیم.

00:09.770 --> 00:12.830
پس بیایید مطمئن شیم که واقعاً می‌دونیم چی هستن.

00:12.860 --> 00:14.360
خب، بریم ببینیمشون.

00:14.360 --> 00:16.850
Enum در واقع یه مجموعه از ثابت‌هاست.

00:16.850 --> 00:20.060
اون‌ها تغییرناپذیرن و باید در سطح namespace قرار بگیرن.

00:20.060 --> 00:23.060
تا کل کتابخونه بتونه ازش استفاده کنه.

00:23.060 --> 00:27.620
و خب، یه چیزی مثل اینه که فرض کنید روزهای هفته رو داریم.

00:27.620 --> 00:29.900
فقط هفت روز توی هفته وجود داره.

00:29.900 --> 00:35.840
پس می‌تونیم یه Enum به اسم Day بسازیم که شامل Monday باشه،

00:35.840 --> 00:42.290
شامل Tuesday، یا Wednesday، Thursday، Friday، Saturday و Sunday باشه.

00:42.680 --> 00:46.160
این‌ها می‌شن روزهای ما.

00:46.160 --> 00:47.510
و این یعنی یه Enum.

00:47.510 --> 00:48.050
خیلی خب.

00:48.050 --> 00:48.830
همین بود در واقع.

00:48.830 --> 00:56.120
حالا اگه بخوایم از Enum روز استفاده کنیم، اون هفت مقدار رو داره که هیچ‌وقت تغییر نمی‌کنن، درسته؟

00:56.720 --> 00:59.240
فقط همون هفت روز رو داریم.

00:59.240 --> 01:03.740
پس بیایید یه Enum Day توی متد main بسازیم.

01:03.740 --> 01:05.120
می‌خوام یه متغیر Day بسازم.

01:05.120 --> 01:08.210
و اسمش رو می‌ذارم fr که یعنی Friday.

01:08.210 --> 01:09.830
و مقدارش می‌شه Day.dot

01:09.830 --> 01:14.750
و همونطور که می‌بینید، مقادیرمون اینجان و حتی اندیس هم دارن.

01:14.750 --> 01:21.350
مثلاً Day.Friday برابر با چهار هست و Monday برابر با صفر.

01:21.380 --> 01:21.980
خیلی خب.

01:21.980 --> 01:23.900
فرض کنید از Friday استفاده می‌کنم.

01:23.900 --> 01:25.490
یعنی مقدارش می‌شه چهار.

01:25.520 --> 01:27.290
اون مقدار چهار داره.

01:27.320 --> 01:29.660
حالا یه روز دیگه بسازیم.

01:29.660 --> 01:31.220
مثلاً Sunday.

01:31.370 --> 01:33.710
می‌نویسم Day.Su

01:35.120 --> 01:40.160
حالا یه روز دیگه هم می‌سازم به اسم a که مقدارش Friday باشه.

01:40.160 --> 01:42.470
پس Day.Fr.

01:42.470 --> 01:47.800
و حالا با Console.WriteLine چک می‌کنیم که fr برابر با a هست یا نه.

01:47.800 --> 01:53.200
یعنی ببینیم Friday با اون روز a یکیه یا نه.

01:53.200 --> 01:58.960
و قبل از اینکه این کارو بکنیم، باید یه Console.ReadKey اضافه کنیم.

02:01.810 --> 02:02.560
به این صورت.

02:02.560 --> 02:04.000
حالا دوباره اجراش می‌کنیم.

02:04.000 --> 02:06.070
و می‌بینیم که مقدار True برمی‌گردونه.

02:06.070 --> 02:13.510
و این به این دلیله که این روز مقدارش Fridayه و اون یکی هم مقدارش Fridayه.

02:13.540 --> 02:19.210
می‌تونیم همینطور مستقیماً چاپش هم بکنیم، مثلاً بنویسیم

02:19.210 --> 02:23.560
Day.Mo یعنی Monday.

02:23.680 --> 02:25.690
ببینیم چی چاپ می‌کنه.

02:25.690 --> 02:27.100
و می‌بینیم True چاپ شد.

02:27.100 --> 02:28.930
و نوشت Monday، Mo.

02:28.930 --> 02:31.870
یعنی Monday مقدار Monday رو داد.

02:31.870 --> 02:39.220
در واقع اون فقط یه نمایش رشته‌ایه، و می‌تونیم مقدار عددیش رو هم بگیریم.

02:40.930 --> 02:47.260
پس با CW مقدار عددی Day.Mo یعنی Monday رو چاپ می‌کنیم.

02:47.260 --> 02:50.710
و همونطور که می‌دونید، مقدارش صفره چون از صفر شروع می‌شه.

02:50.710 --> 02:56.050
پس اینجا داریم True، Mo و صفر، چون اولین مقدار صفره.

02:56.050 --> 02:59.260
بعدی می‌شه یک، دو و همینطور ادامه پیدا می‌کنه.

02:59.260 --> 03:00.790
حالا یه تمرین کوچیک.

03:00.790 --> 03:04.720
یه Enum بسازید که شامل ماه‌های سال باشه.

03:04.720 --> 03:06.370
پس لطفاً خودتون امتحان کنید.

03:06.370 --> 03:07.240
خیلی خب.

03:07.240 --> 03:26.890
پس یه Enum به اسم Month داریم که شامل January، February، March، April، May، June، July، August، September، October،

03:27.850 --> 03:30.310
November و December می‌شه.

03:30.910 --> 03:32.980
پس این هم یه Enum دیگه‌ست.

03:32.980 --> 03:36.790
و حالا می‌تونیم به همون شکل به مقادیرش دسترسی داشته باشیم.

03:36.790 --> 03:41.140
و نه فقط توی این کلاس، بلکه توی کل namespace چون

03:41.140 --> 03:46.030
اون رو بیرون از کلاس ساختم، در سطح namespace.

03:46.060 --> 03:48.820
حالا فرض کنید می‌خوایم مقدار از یک شروع بشه.

03:48.820 --> 03:51.790
یعنی January برابر با یک باشه.

03:51.790 --> 03:54.160
پس مقدارش رو یک تنظیم می‌کنیم.

03:54.160 --> 03:58.750
و حالا مقدار ماه رو چاپ می‌کنیم.

03:58.750 --> 04:03.580
مثلاً می‌گیریم Month.January.

04:03.580 --> 04:07.360
یا مثلاً می‌خوایم ببینیم February الان شده دو یا نه.

04:07.360 --> 04:11.650
پس با cast کردن به int اون رو چاپ می‌کنیم.

04:11.650 --> 04:13.450
یعنی تبدیلش می‌کنیم به عدد صحیح.

04:13.450 --> 04:14.280
ببینیم چی می‌شه.

04:14.280 --> 04:17.400
و می‌بینیم که February برابر با دو شده.

04:17.400 --> 04:20.490
و این به خاطر اینه که اندیس از یک شروع شده.

04:20.490 --> 04:23.190
حالا ببینیم آیا می‌تونیم مقدار دیگه‌ای رو هم عوض کنیم.

04:23.190 --> 04:28.890
مثلاً بگیم July باید دوازدهمین ماه باشه، چون معمولاً هفتمه.

04:28.890 --> 04:30.750
اما فرض کنیم July دوازدهمه.

04:30.750 --> 04:34.470
پس اون رو هم روی کنسول چاپ می‌کنیم.

04:34.470 --> 04:43.560
از همون خط کد قبلی استفاده می‌کنم، فقط February رو با July عوض می‌کنم، یا حتی بگیم August.

04:44.670 --> 04:47.370
ببینیم مقدار August چنده.

04:47.370 --> 04:49.140
و می‌بینیم که 13 شده.

04:49.140 --> 04:51.330
پس می‌تونیم اندیس‌ها رو دوباره تعیین کنیم.

04:51.330 --> 04:54.690
و شمارش از اون نقطه به بعد ادامه پیدا می‌کنه.

04:54.690 --> 05:02.760
می‌بینید که June برابر با 6ه، July برابر با 12 و August برابر با 13 و به همین ترتیب ادامه داره.

05:02.760 --> 05:11.580
پس به طور کلی، چیزی که باید به یاد داشته باشید اینه که Enumها برای به اشتراک‌گذاری یه مجموعه از ثابت‌ها هستن تا یه کتابخونه

05:11.580 --> 05:12.570
یک‌دست بمونه.

05:12.570 --> 05:15.390
پس می‌تونید ازشون توی همه کلاس‌های مختلف استفاده کنید.

05:15.390 --> 05:18.390
و همیشه همون مقدارها رو خواهند داشت.

05:18.390 --> 05:24.030
و دیگه لازم نیست توی هر کلاس اون ثابت‌ها رو دوباره تعریف کنید.

05:24.030 --> 05:24.630
عالیه.

05:24.630 --> 05:26.400
اینم از Enumها.

05:26.400 --> 05:28.500
برگردیم سراغ Structها.

05:28.650 --> 05:29.580
اونجا می‌بینمتون.
