دوباره خوش آمدید.
در این ویدیو قراره ببینیم چطور می‌تونیم از **complex objects** (اشیاء پیچیده) در **list**ها استفاده کنیم و از **list**ها برای مدیریت **complex objects** استفاده کنیم.
بنابراین من قراره یک **class** جدید ایجاد کنم.
من قراره مستقیماً از **namespace ListApp** استفاده کنم.
پس یک فایل جداگانه ایجاد نمی‌کنم.
شما می‌تونید **class**ها رو داخل یک فایل و چندین **class** ایجاد کنید.
هر چند، این روش خیلی خوبی نیست، بنابراین بهتره که فایل‌های جداگانه داشته باشید.
فقط می‌خواستم این رو بگم.
اما برای این مثال خاص که فقط دارم ایده‌های پشت اون رو به شما نشون می‌دم، کاملاً خوبه.
پس همچنان کار خواهد کرد.
پس من یک **class** خواهم داشت که اون رو **Product** (محصول) می‌نامم.
و حالا در بدنه **Product**، یک **Name** (نام) و همچنین، مثلاً یک **Price** (قیمت) خواهم داشت.
اوکی.
پس ما فقط دو **property** (ویژگی) برای **Product** خودمون خواهیم داشت.
خب واضحاً این می‌تونه خیلی بیشتر باشه.
می‌تونستیم 15، 20 و هر چی داشته باشیم.
اما من اون رو خیلی ساده نگه می‌دارم.
من فقط این دو جزئیات رو در مورد یک **Product** خواهم داشت.
حالا ما از **main method** خودمون اینجا استفاده خواهیم کرد تا یک **list** از **Product**ها رو ایجاد کنیم.
پس اینجا ما داریم یک **products list** از نوع **Product** ایجاد می‌کنیم.
می‌بینید، ما نمی‌تونیم فقط از **string**ها و **int**ها استفاده کنیم.
ما می‌تونیم از انواع داده‌ای استفاده کنیم که خودمون تعریف کردیم.
پس این **class Product** کوچک خودمون هست که داریم ازش استفاده می‌کنیم.
و حالا می‌تونیم **object**هایی از اون **class** ایجاد کنیم.
و ما قراره یک **list** از اون نوع داده پیچیده ایجاد کنیم.
حالا قضیه اینه که واضحاً می‌تونم جلو برم و بگم **products.Add** و بعد یک **new Product** اضافه کنم.
و من این کار رو خواهم کرد.
پس من به **Product**، مثلاً **Berries** (توت) و یک **Price** (قیمت) 2.99 دلار رو خواهم داد، اوکی؟
و این باید یک نقطه باشه.
بفرمایید.
پس این **Product** جدید ما خواهد بود و داریم اون رو به **products** خودمون اینجا اضافه می‌کنیم.
با این حال، می‌تونم از **curly brackets** (آکولاد) هم استفاده کنم و **products list** خودمون رو مستقیماً با آیتم‌های **Product** مقداردهی اولیه کنم.
پس می‌تونم جلو برم و بگم **new Product**.
و بعد داخل پرانتزهای خودم، می‌تونم تعریف کنم که نام یک **Product** چی قراره باشه.
پس **Apple** (سیب) و قیمت قراره چی باشه.
پس **Price** قراره مثلاً **0.80 دلار** برای یک سیب باشه.
اوکی.
و اینطور می‌تونید مستقیماً یک **object** از **class** خودمون ایجاد کنید.
پس می‌بینید، با آنچه در گذشته دیدیم متفاوته، جایی که اگه یک **Product** ایجاد می‌کردیم، **Product**...
**new Product**، بعد جلو می‌رفتیم و جزئیاتی مثل **properties** رو شاید مستقیماً به **constructor** اضافه می‌کردیم، اما می‌تونیم مستقیماً با استفاده از **curly brackets** به **properties** دسترسی داشته باشیم چون **public** هستن.
می‌تونیم مستقیماً با استفاده از **curly brackets** به این شکل بهشون دسترسی داشته باشیم.
پس هنگام ایجاد یک **new Product**، می‌تونیم فقط از **curly brackets** اینجا استفاده کنیم و بعد مقادیر رو به **properties**های مجزا اختصاص بدیم.
پس حالا می‌تونیم جلو بریم و هر طور که می‌خوایم **new Product** ایجاد کنیم.
پس بیایید دو تا دیگه ایجاد کنیم.
پس ما سیب، موز و مثلاً گیلاس داریم.
و حالا بیایید قیمت رو تغییر بدیم.
پس موز، مثلاً یک موز 0.30 دلار هست.
و خب یک پوند گیلاس، مثلاً 5 دلار یا یک پوندش مثلاً 3.80 دلار یا همچین چیزی باشه. اوکی.
پس حالا **list** **Product**های خودمون رو داریم.
و شما یک روش متفاوت برای ایجاد **Product**ها دیدید، درسته.
یا انواع داده پیچیده از **class** خودمون که ایجاد کردیم.
حالا بیایید جلو بریم و آیتم‌های مجزایی رو که داخل **products** خودمون داریم، نمایش بدیم.
پس من می‌گم **"Available Products:"** (محصولات موجود:) دو نقطه.
و بعد از یک **foreach loop** استفاده می‌کنم تا از طریق تمام **Product**ها **iterate** (تکرار) کنم.
پس اینجا می‌تونید ببینید **product product in products**.
و بعد می‌تونم **product name** و **product price** رو بنویسم.
با این حال، قراره کمی متفاوت این کار رو انجام بدم.
من قراره از یک **string** اینجا با علامت **dollar** استفاده کنم.
پس **"Product Name"**، نام **Product**.
و اینجا باید از **curly brackets** دور **product name** استفاده کنیم چون این کد هست. و بعد قراره **product price** رو نمایش بدم.
پس اینجا دوباره از **product.price** استفاده خواهیم کرد، اوکی.
پس خط به این شکل خواهد بود.
و این حالا به من اجازه می‌ده تمام آیتم‌ها رو نمایش بدم.
یعنی تمام **Product**هایی که داخل **products list** من هستن.
پس بیایید این رو اجرا کنیم.
و بفرمایید، **"Available Products"** (محصولات موجود).
نام **Product** سیب با 0.80 دلار، 0.3 و الی آخر.
پس اینجا دیدیم چطور می‌تونیم یک **list** از یک نوع داده پیچیده ایجاد کنیم، چطور می‌تونیم آیتم‌ها رو به **list** انواع داده پیچیده اضافه کنیم و چطور می‌تونیم دسترسی داشته باشیم...
به محتوای انواع داده پیچیده، همه اونها از یک **list**.
و این تقریباً همه چیز برای این ویدیو هست.
پس یک سلاح دیگه برای زرادخانه شما.
در ویدیوی بعدی، قراره ببینیم چطور می‌تونیم آیتم‌ها رو از **project** خودمون فیلتر کنیم.
و در ویدیوی بعدی قراره ببینیم چطور می‌تونیم آیتم‌ها رو با استفاده از **LINQ** فیلتر کنیم.
اما قراره واقعاً سریع به **LINQ** بپردازیم.
ما قراره با جزئیات بیشتری در فصل **LINQ** وارد عمق بشیم، اما هنوز فکر می‌کنم واقعاً خوبه که کمی ایده به شما بدم که چطور می‌تونید **list** محصولات پیچیده‌تر خودتون رو در ویدیوی بعدی فیلتر کنید، پس اونجا می‌بینمتون.