خوش برگشتید.
در این ویدیو به **Dictionary**ها نگاه خواهیم کرد.
حداقل شروع به نگاه کردن بهشون می‌کنیم چون خیلی قدرتمند هستند.
و جنبه‌های زیادی وجود داره که باید بهشون نگاه کنیم، جنبه‌های فردی زیادی که **Dictionary** برای ارائه داره، که قراره چندین ویدیو طول بکشه.
پس بیایید یک **Dictionary** بسازیم و بعد بفهمیم که **Dictionary** در کل چیه و چرا اهمیت داره.
چون ایده کلی **Dictionary**ها اینه که به ما اجازه می‌دن از کالکشن‌هایی با جفت **Key-Value** استفاده کنیم.
پس بیایید ببینیم این به چه معناست.
پس می‌تونم از این کلمه کلیدی **Dictionary** اینجا استفاده کنم.
و این **Dictionary** به این شکل هست.
پس ما باید تعریف کنیم که چه جفت **Key-Value**ای می‌خوایم داشته باشیم.
پس ایده **Key-Value** اینه که برای هر **Key** شما یک **Value** به اون اختصاص دادید.
شما نمی‌تونید یک **Key** رو چندین بار داشته باشید.
یک **Key** یکسان فقط یک بار وجود داره.
این به ما اجازه می‌ده همیشه بدونیم که در یک... مثلاً **ID**، در یک پایگاه داده، یک **Object** یا یک نام خاصی در اون ذخیره شده.
پس این برای چیزی مثل **Employee**ها (کارمندان) خیلی خوب کار می‌کنه، درسته.
پس **Key-Value** این همون **TKey** و **TValue** هست.
حالا می‌بینید اینجا اگه روی **Dictionary** نگه دارید، می‌بینید که داخل **System.Collections.Generic** هست. و اونجاست که **Dictionary Class** قرار داره.
و بعد داخل علامت‌های فلشدار (Pointy Brackets) می‌گه **TKey**، **TValue** که **TKey** نباید **Null** باشه. پس این **T** به این معنیه که اون **Generic** هست که یعنی می‌تونه از هر نوعی باشه.
پس هر نوعی که می‌خواید استفاده کنید، می‌تونید از اون به عنوان **Key** و همچنین به عنوان **Value** استفاده کنید.
با این حال باید مطمئن بشید که **Key** از نوع **Nullable** نباشه. نمی‌تونه **Null** باشه. باشه.
پس بیایید با استفاده از یک جفت **Key-Value** از نوع **int** و **string** اون رو خیلی ساده کنیم، باشه.
پس من این رو **Employees** می‌نامم چون کمی ساده‌ترش می‌کنه.
پس **Employees** جمع هست چون یک کالکشنه، درسته. پس ما چندین آیتم **Employee** داخل این **Dictionary** خواهیم داشت.
حالا می‌بینید چطور **Dictionary**ها رو اینطوری اعلان می‌کنید.
از کلمه کلیدی **Dictionary** استفاده می‌کنید.
سپس داخل علامت‌های فلشدار نوع **Key** و همچنین ویرگول رو تنظیم می‌کنید. بعد نوع **Value**.
پرانتز رو می‌بندید، یک نام بهش می‌دید، و بعد در خط بعدی اون رو مقداردهی اولیه می‌کنید که در اون از کلمه کلیدی **new**، کلمه کلیدی **Dictionary** و بعد همون **Data Type**هایی که قبلاً استفاده کردید، استفاده می‌کنید. اون‌ها رو هم اینجا اضافه می‌کنید. سپس پرانتزهای گرد باز و بسته و نقطه ویرگول رو دارید.
پس اینجا ما داریم یک **Dictionary** رو اعلان و مقداردهی اولیه می‌کنیم.
حالا برای اضافه کردن یک آیتم، می‌تونیم فقط بگیم **employees.Add**.
و بعد باید نشون بدیم که در کدوم **Key** می‌خوایم کدوم **Value** رو اختصاص بدیم. پس اینجا **Key** از نوع **int** هست چون اینطوری تعریفش کردیم.
پس فرض کنید در **Add 101** می‌خوام **John Doe** رو داشته باشم. پس در این **ID 101**، من **John Doe** رو در **Employees Dictionary** خودم خواهم داشت.
پس در کالکشن **Employees** من، حالا بیایید یک **Employee** دیگه اینجا اضافه کنیم. پس یک **Add** دیگه و این یکی **102** خواهد بود.
و اینجا مثلاً **Bob Smith** رو خواهیم داشت، باشه.
پس حالا این نحوه هست که می‌تونیم خیلی راحت ورودی‌های بیشتری داخل **Dictionary Collection**مون ایجاد کنیم.
پس اون مثل یک **List** هست، اما به این معنا که یک جفت **Key-Value** هست و شما کنترل کامل روی اون دارید، پیچیده‌تره.
پس شما کنترل دارید روی اینکه در کدوم **Key** کدوم **Value** رو ذخیره می‌کنید.
پس حالا چطور می‌تونیم به داده‌های **Employee** دسترسی داشته باشیم؟
می‌تونیم به طور مشابه با کاری که با **Array**ها کردیم، بهش دسترسی داشته باشیم. با این حال، به این شکل هست.
چون ما از یک **int** به عنوان **Key** استفاده می‌کنیم. قراره ببینیم چه جایگزین‌هایی داریم.
پس می‌تونم جلو برم و فقط بگم **string name** قراره **employee** در موقعیت **101** یا **employees** باشه که دقیق‌تره. پس من قراره **Employee** رو در موقعیت **101** بگیرم.
پس در این **Index** یا این **int 101**. و بعد می‌تونم فقط **Name** رو تایپ کنم، باشه.
پس من فقط این رو اجرا می‌کنم و خواهید دید که می‌گه **John Doe**. چون در **101** اونجاست که ما **John Doe** رو داریم. بفرمایید.
پس این اینجا نحوه دسترسی به آیتم‌ها در یک **Dictionary** هست، باشه.
و می‌گم، بیایید اینجا یک مکث کنیم.
و در ویدیوی بعدی خواهیم دید که چطور می‌تونیم داده‌ها رو **Update** کنیم و چطور می‌تونیم چک کنیم که آیا داده‌ای وجود داره، و همچنین چطور می‌تونیم داده‌ها رو از **Collection Dictionary**مون حذف کنیم.