1
00:00.140 --> 00:00.860
خوش برگشتید.

2
00:00.860 --> 00:02.960
در این ویدیو به **Dictionary**ها نگاه خواهیم کرد.

3
00:02.960 --> 00:06.350
حداقل شروع به نگاه کردن بهشون می‌کنیم چون خیلی قدرتمند هستند.

4
00:06.350 --> 00:15.650
و جنبه‌های زیادی وجود داره که باید بهشون نگاه کنیم، جنبه‌های فردی زیادی که **Dictionary** برای ارائه داره، که قراره چندین ویدیو طول بکشه.

5
00:15.650 --> 00:22.190
پس بیایید یک **Dictionary** بسازیم و بعد بفهمیم که **Dictionary** در کل چیه و چرا اهمیت داره.

6
00:22.190 --> 00:30.500
چون ایده کلی **Dictionary**ها اینه که به ما اجازه می‌دن از کالکشن‌هایی با جفت **Key-Value** استفاده کنیم.

7
00:30.500 --> 00:32.570
پس بیایید ببینیم این به چه معناست.

8
00:32.570 --> 00:35.390
پس می‌تونم از این کلمه کلیدی **Dictionary** اینجا استفاده کنم.

9
00:35.390 --> 00:38.660
و این **Dictionary** به این شکل هست.

10
00:38.660 --> 00:44.240
پس ما باید تعریف کنیم که چه جفت **Key-Value**ای می‌خوایم داشته باشیم.

11
00:44.240 --> 00:49.880
پس ایده **Key-Value** اینه که برای هر **Key** شما یک **Value** به اون اختصاص دادید.

12
00:49.880 --> 00:52.850
شما نمی‌تونید یک **Key** رو چندین بار داشته باشید.

13
00:52.850 --> 00:55.340
یک **Key** یکسان فقط یک بار وجود داره.

14
00:55.340 --> 01:06.590
این به ما اجازه می‌ده همیشه بدونیم که در یک... مثلاً **ID**، در یک پایگاه داده، یک **Object** یا یک نام خاصی در اون ذخیره شده.

15
01:06.590 --> 01:11.000
پس این برای چیزی مثل **Employee**ها (کارمندان) خیلی خوب کار می‌کنه، درسته.

16
01:11.000 --> 01:15.920
پس **Key-Value** این همون **TKey** و **TValue** هست.

17
01:15.950 --> 01:25.880
حالا می‌بینید اینجا اگه روی **Dictionary** نگه دارید، می‌بینید که داخل **System.Collections.Generic** هست. و اونجاست که **Dictionary Class** قرار داره.

18
01:25.880 --> 01:36.230
و بعد داخل علامت‌های فلشدار (Pointy Brackets) می‌گه **TKey**، **TValue** که **TKey** نباید **Null** باشه. پس این **T** به این معنیه که اون **Generic** هست که یعنی می‌تونه از هر نوعی باشه.

19
01:36.230 --> 01:41.630
پس هر نوعی که می‌خواید استفاده کنید، می‌تونید از اون به عنوان **Key** و همچنین به عنوان **Value** استفاده کنید.

20
01:41.660 --> 01:47.510
با این حال باید مطمئن بشید که **Key** از نوع **Nullable** نباشه. نمی‌تونه **Null** باشه. باشه.

21
01:47.510 --> 01:55.280
پس بیایید با استفاده از یک جفت **Key-Value** از نوع **int** و **string** اون رو خیلی ساده کنیم، باشه.

22
01:55.280 --> 02:00.290
پس من این رو **Employees** می‌نامم چون کمی ساده‌ترش می‌کنه.

23
02:00.290 --> 02:07.970
پس **Employees** جمع هست چون یک کالکشنه، درسته. پس ما چندین آیتم **Employee** داخل این **Dictionary** خواهیم داشت.

24
02:07.970 --> 02:12.230
حالا می‌بینید چطور **Dictionary**ها رو اینطوری اعلان می‌کنید.

25
02:12.230 --> 02:13.910
از کلمه کلیدی **Dictionary** استفاده می‌کنید.

26
02:13.910 --> 02:20.150
سپس داخل علامت‌های فلشدار نوع **Key** و همچنین ویرگول رو تنظیم می‌کنید. بعد نوع **Value**.

27
02:20.150 --> 02:35.210
پرانتز رو می‌بندید، یک نام بهش می‌دید، و بعد در خط بعدی اون رو مقداردهی اولیه می‌کنید که در اون از کلمه کلیدی **new**، کلمه کلیدی **Dictionary** و بعد همون **Data Type**هایی که قبلاً استفاده کردید، استفاده می‌کنید. اون‌ها رو هم اینجا اضافه می‌کنید. سپس پرانتزهای گرد باز و بسته و نقطه ویرگول رو دارید.

28
02:35.210 --> 02:41.360
پس اینجا ما داریم یک **Dictionary** رو اعلان و مقداردهی اولیه می‌کنیم.

29
02:41.360 --> 02:47.900
حالا برای اضافه کردن یک آیتم، می‌تونیم فقط بگیم **employees.Add**.

30
02:47.900 --> 02:57.890
و بعد باید نشون بدیم که در کدوم **Key** می‌خوایم کدوم **Value** رو اختصاص بدیم. پس اینجا **Key** از نوع **int** هست چون اینطوری تعریفش کردیم.

31
02:57.890 --> 03:08.990
پس فرض کنید در **Add 101** می‌خوام **John Doe** رو داشته باشم. پس در این **ID 101**، من **John Doe** رو در **Employees Dictionary** خودم خواهم داشت.

32
03:08.990 --> 03:17.660
پس در کالکشن **Employees** من، حالا بیایید یک **Employee** دیگه اینجا اضافه کنیم. پس یک **Add** دیگه و این یکی **102** خواهد بود.

33
03:17.660 --> 03:21.620
و اینجا مثلاً **Bob Smith** رو خواهیم داشت، باشه.

34
03:21.620 --> 03:30.140
پس حالا این نحوه هست که می‌تونیم خیلی راحت ورودی‌های بیشتری داخل **Dictionary Collection**مون ایجاد کنیم.

35
03:30.140 --> 03:39.230
پس اون مثل یک **List** هست، اما به این معنا که یک جفت **Key-Value** هست و شما کنترل کامل روی اون دارید، پیچیده‌تره.

36
03:39.230 --> 03:43.910
پس شما کنترل دارید روی اینکه در کدوم **Key** کدوم **Value** رو ذخیره می‌کنید.

37
03:43.910 --> 03:48.470
پس حالا چطور می‌تونیم به داده‌های **Employee** دسترسی داشته باشیم؟

38
03:48.470 --> 03:56.690
می‌تونیم به طور مشابه با کاری که با **Array**ها کردیم، بهش دسترسی داشته باشیم. با این حال، به این شکل هست.

39
03:56.690 --> 04:04.430
چون ما از یک **int** به عنوان **Key** استفاده می‌کنیم. قراره ببینیم چه جایگزین‌هایی داریم.

40
04:04.430 --> 04:20.270
پس می‌تونم جلو برم و فقط بگم **string name** قراره **employee** در موقعیت **101** یا **employees** باشه که دقیق‌تره. پس من قراره **Employee** رو در موقعیت **101** بگیرم.

41
04:20.270 --> 04:26.450
پس در این **Index** یا این **int 101**. و بعد می‌تونم فقط **Name** رو تایپ کنم، باشه.

42
04:26.450 --> 04:34.070
پس من فقط این رو اجرا می‌کنم و خواهید دید که می‌گه **John Doe**. چون در **101** اونجاست که ما **John Doe** رو داریم. بفرمایید.

43
04:34.070 --> 04:41.120
پس این اینجا نحوه دسترسی به آیتم‌ها در یک **Dictionary** هست، باشه.

44
04:41.120 --> 04:43.730
و می‌گم، بیایید اینجا یک مکث کنیم.

45
04:43.730 --> 04:54.290
و در ویدیوی بعدی خواهیم دید که چطور می‌تونیم داده‌ها رو **Update** کنیم و چطور می‌تونیم چک کنیم که آیا داده‌ای وجود داره، و همچنین چطور می‌تونیم داده‌ها رو از **Collection Dictionary**مون حذف کنیم.