بسیار خب.
بنابراین در این ویدیو می‌خوایم ببینیم چطور می‌تونیم به جای فقط **String**ها، **Object**های کامل رو داخل یک **Dictionary** ذخیره کنیم، باشه.
پس در مثال ما با **Employees**، ما اینجا فقط از **String** استفاده کردیم. اما اگه یک **Class** دیگه داشتیم چی؟
پس اینجا من یک **Class** دیگه به نام **Employee** خواهم داشت.
و حالا این **Class** حاوی اطلاعات خاصی خواهد بود.
مثلاً می‌تونستیم نام رو داشته باشیم.
پس این فقط یک **Property** **String** و **Name** خواهد بود.
بعد می‌تونستیم سن یا تاریخ تولد یا هر چیز دیگه‌ای رو داشته باشیم.
پس `public string` و خب، این یک **Int** خواهد بود، فرض کنید **Age**.
بعد `public int salary` رو داریم، به این شکل، باشه.
پس ما تمام این اطلاعات رو در مورد یک کارمند داریم.
و چیزی که می‌خوایم بگیم اینه که هر بار که یک **Employee Object** ایجاد می‌کنیم، باید تمام این اطلاعات رو منتقل کنیم. پس باید **Name**، **Age** و همچنین **Salary** رو منتقل کنیم. پس **Salary** به این شکل.
و حالا بیایید فقط تمام اون مقادیر رو اختصاص بدیم، **Age**، **Salary** و غیره، باشه.
پس حالا بیایید جلو بریم و از این **Employee** استفاده کنیم.
پس به جای اینکه فقط بگیم: باشه، **Employees** ما قراره یک **Dictionary** از **Int** و **String** باشه، اون‌ها در واقع قراره یک **Dictionary** از **Employees** باشن.
پس حالا مسلماً باید اون رو اینجا هم تغییر بدیم. و بیایید از شر تمام کدهای دیگه‌ای که تا حالا ایجاد کردیم خلاص بشیم، باشه.
پس تفاوت رو بلافاصله می‌بینید.
پس حالا داریم می‌گیم در **Key** از نوع **Int**، قراره یک **Employee Object** کامل رو ذخیره کنیم.
پس حالا اگه بخوایم یک آیتم به **Employees** اضافه کنیم، کاری که می‌تونیم انجام بدیم اینه که بگیم `employees.Add`.
و بعد باید بگیم در کدوم **Index** می‌خوایم اضافه کنیم، و همچنین **Employee**ای که می‌خوایم اضافه کنیم. پس اینجا می‌تونیم بگیم `new Employee`.
و بعد باید **Name**، **Age** و همچنین **Salary** رو منتقل کنیم. پس مثلاً **John Doe**.
بعد اون 35 سالشه و یک حقوق سالانه مثلاً 100K داره. باشه.
پس اینطوری می‌تونیم حالا یک آیتم به **Dictionary**مون اضافه کنیم، که به صورت ساده‌شده فقط یک **Int** و یک **String** مرتبط با اون نداره، بلکه در واقع می‌تونه **Object**های کامل رو نگه داره.
پس بیایید فقط از این بگذریم و چند آیتم دیگه اضافه کنیم.
پس در **Index 2** یا در **Int 2**، **Index** نیست، **Key** هست، درسته، در **Key 2**، قراره **John Does** رو اضافه کنم، باشه.
پس **John Does**.
و بیایید **John Doesn't** رو اضافه کنیم.
و **John Doesn't** 25 سالشه. و خیلی بیشتر درآمد داره.
بنابراین به دلایلی، و بعد **John Wasn't** رو در ... و اون 45 سالشه. اون نبود و هرگز نخواهد بود. و حقوقش مثلاً 80K خواهد بود.
و بعد **John Won't** رو داریم و **John**، یا بیایید اون رو **Will** بنامیم.
**John Will** و اون هنوز 15 سالشه، پس از همین حالا 50K می‌گیره، پسر خیلی خوبیه.
حالا فقط باید مطمئن بشم که مسلماً **Key**های من هر بار منحصر به فرد باشن.
و حالا چطور می‌تونستیم از طریق هر کارمند پیمایش کنیم و تمام اطلاعات هر کارمند رو بهمون بده؟
پس بیایید فقط یک حلقه **For Each** ایجاد کنیم.
و اینجا می‌بینید که به من `item in employees` رو می‌ده.
پس این مسلماً آسون‌تر از ایجاد یک جفت **Key-Value** هست. یا فقط گفتن اینکه هر آیتم قراره یک جفت **Key-Value** باشه.
پس این برای اون یکی هم کار می‌کرد، جایی که ما فقط از کلمه کلیدی `var` استفاده می‌کنیم و می‌گیم یک آیتم از **Employees**، از هر نوعی که باشه.
بیایید فقط به صورت جداگانه ازش بگذریم.
پس این آیتم قراره هر ورودی تکی داخل **Dictionary** من باشه. پس هر جفت **Key-Value** تکی، می‌تونید روی این `var` نگه دارید و خواهید دید که از چه نوعی هست. و اینجا مستقیماً می‌گه یک جفت **Key-Value** **Generic** هست. پس این چیزیه که آخرین بار دیدیم.
پس می‌تونید ببینید که `var` واقعاً گاهی اوقات کار رو آسون‌تر می‌کنه، حداقل از نظر کدنویسی.
و بعد کاری که می‌خوایم انجام بدیم اینه که اطلاعات مربوط به هر کارمند رو چاپ کنیم.
پس می‌تونیم بگیم **ID** و بعد از `item.` استفاده می‌کنیم. و اینجا باید از آکولادها استفاده کنیم. پس `item.Key`.
و حالا چطور می‌تونیم در واقع **Employee Name** یا **Employee Salary** یا **Age** رو بگیریم.
فکر می‌کنید چطور باید به اون دسترسی پیدا کنید؟ خب نام... بذارید بهتون نشون بدم چطور کار می‌کنه.
پس ما یک بار دیگه از آکولادها استفاده می‌کنیم.
و اینجا از `item.Value.` استفاده می‌کنیم. و بعد می‌بینید که ما داریم...
تمام **Property**های کارمندمون رو داریم، چون می‌تونید کارمند رو اینجا ببینید، کارمند **Data Type**ای هست که ما به عنوان **Value** ذخیره می‌کنیم. پس هر وقت داریم به **Value** دسترسی پیدا می‌کنیم، می‌تونیم **Property**های **Value** رو ذخیره کنیم.
پس اینجا می‌بینید `value.` به ما **Property**های مختلفی رو می‌ده که در کارمندمون در دسترس داریم. پس ما **Name** رو داریم.
حالا چطور به **Salary** دسترسی پیدا می‌کنید؟ باشه، درآمد... و شاید بله، ما یک فضای خالی اونجا داریم، باشه.
پس می‌تونیم فقط بگیم درآمد و بعد دوباره آکولادها، می‌گیم `item.Value.Salary` و بعد سنش اینقدر سال هست و `item.Value.Age` سالشه. باشه.
پس اینطوری از طریق کل **Dictionary**مون پیمایش می‌کنیم که حالا یک **Data Type** پیچیده به عنوان **Value** داره. باشه، ما هنوز **Key** رو ساده نگه داشتیم، فقط یک **ID** یا یک **Int**. با این حال می‌تونیم اون رو پیچیده‌تر کنیم.
پس بیایید هنوز این رو خیلی سریع اجرا کنیم و ببینیم چی ازش درمیاد.
و می‌بینیم **ID 1** نامش **John Does** هست، 100,000 درآمد داره و 35 سالشه و الی آخر.
پس واقعاً از طریق کل لیست می‌ره.
و می‌گم این برای این ویدیو کافیه.
این فقط یک سطح دیگه از کاریه که می‌تونید با **Dictionary**ها انجام بدید.
پس می‌تونستید و این خیلی پیچیده‌تر می‌شه، می‌تونستید حتی از یک **Employee Object** به عنوان **Key** استفاده کنید به جای فقط یک **Int** به عنوان **Key**.
مسلماً یک **Int** به عنوان **Key**.
ممکنه بگید، خب، چرا اون وقت فقط از **Array**ها استفاده نکنم؟ چون **Array**ها می‌تونن همون کار رو انجام بدن.
من می‌تونم یک کارمند داخل یک **Array** داشته باشم، یا مثلاً می‌تونم چندین کارمند از یک **Array** داخل یک **Array** داشته باشم.
پس اون یک **Collection** خواهد بود که اون هم کار می‌کنه. چرا از اون استفاده نکنیم؟
خب، نکته اینه که در واقع پاسخ به این سوال کمی پیچیده‌تر و طولانی‌تر از اونیه که بخوام فقط در چند جمله بگم.
پس من یک **Text Lecture** (سخنرانی متنی) اضافه خواهم کرد که در اون می‌تونید به صورت عمیق بخونید، و اون درک به مراتب بهتری از اینکه چرا هنوز مفیده که این کار رو به این روش و با استفاده از **Dictionary**ها انجام بدید، بهتون می‌ده. بسیار خب.
پس می‌گم بیایید ببینیم چطور می‌تونیم از **Dictionary**ها با یک **String** به عنوان **Key** و یک **String** به عنوان **Value** هم استفاده کنیم.