دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • مرداد

جلسه ۰۹ : Anonymous Type در #C

  • دسته‌بندی‌ها :
جلسه ۰۹ : Anonymous Type در #C
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با Extension methods ها در زبان #C آشنا شدید ، در این بخش قصد داریم شما را با انواع ناشناس در #C یا Anonymous Type در #C  آشنا کنیم. تا پایان این جلسه همراه ما باشید.

      Anonymous type ، همانطور که از نام آن پیداست، یک نوع است که هیچ نامی ندارد. #C اجازه می دهد که یک شی را بدون تعریف کلاس آن با کلید واژه new ایجاد کنید . متغیر نوع ضمنی تعریف شده برای نگهداری مرجع انواع ناشناس استفاده می شود.
      مثال : 

      در مثال بالا، myAnonymousType یک شی از نوع ناشناس ایجاد شده با استفاده از کلمه کلیدی new و مقداردهی اولیه آن است. که شامل سه پراپرتی از انواع داده ها است .

      یک نوع ناشناس ، نوع داده موقت است که براساس اطلاعاتی که شما در هنگام تعریف و مقداردهی اولیه شیء در نظر گرفته اید ،تعریف می شود. خواص نوع ناشناس خواص فقط خواندنی (read-only) است، بنابراین شما نمیتوانید مقادیر را تغییر دهید.
      Anonymous Type ها در #C
      توجه داشته باشید که کامپایلر نوع مناسب را به هر مورد بر اساس مقدار اعمال می کند. به عنوان مثال، firstProperty یک نوع رشته است، secondProperty نوع int است و thirdProperty یک نوع  bool است.
      در پشت پس زمینه کامپایلر به طور خودکار نوع جدیدی را برای انواع ناشناس تولید می کند. به نوع ناشناسی که در زیر نشان داده شده است دقت کنید.
      مثال : 

      خروجی:
      مثال : 

      همانطور که می توانید در خروجی بالا مشاهده کنید، کامپایلر یک نوع را با یک نام رمزشده برای یک نوع ناشناس تولید می کند.
      anonymous type
      توجه داشته باشید که از کلاس System.Object مشتق شده است. همچنین، یک کلاس مهر و موم شده (sealed) است و تمام پراپرتی ها بصورت فقط خواندنی ایجاد شده اند.

      Anonymous Type های تودرتو :

      یک نوع ناشناس می تواند یک نوع ناشناس دیگر را به عنوان یک پراپرتی داشته باشد.

      مثال : 

      anonymous types های تودرتو نیز دارای اینتلیسنس (intellisense) (سامانه هوشمند تکمیل کد مایکروسافت) هستند.

       

      محدوده Anonymous Type :

      یک anonymous type همواره محلی است برای متدهایی که در آن تعریف شده اند. معمولا نمیتوانید یک نوع anonymus را به متد دیگری منتقل کنید؛ ولی، می توانید آن را به یک متد که پارامتری از نوع داینامیک را قبول کند منتقل کنید. لطفا توجه داشته باشید که انتقال (Passing) anonymous type ها با استفاده از نوع داینامیک توصیه نمی شود.
      مثال : 

      خروجی :
      مثال : 

      Anonymous Types با  LINQ :

      کد select در Linq یک anonymous type  را ایجاد می کند که نتیجه پرس و جو شامل پراپرتی های مختلفی است که هیچ یک در کلاس تعریف نشده اند.

      مثال : 

      در مثال بالا، کلاس Student شامل پراپرتی های مختلفی است. در متد Main ، دستور  select در linq نوع ناشناسی (anonymous type ) را ایجاد می کند که شامل StudentId و StudentName است .

      anonymous type در نمایه debug view

       

      چند نکته مهم جهت بخاطر سپردن :

      1. نوع ناشناس (Anonymous type) را می توان با استفاده از کلمه کلیدی new و مقداردهی اولیه آن ، تعریف کرد.
      2. متغیر var به طور ضمنی، برای نگهداری یک نوع ناشناس استفاده می شود.
      3. نوع ناشناس یک نوع ارجاعی بوده و تمام پراپرتی های آن از نوع فقط خواندنی هستند.
      4. دامنه یک نوع ناشناس محلی است که متدهایی در آن تعریف شده است.

       

      در این بخش با انواع ناشناس (anonymous type) در زبان #C آشنا شدید ، در قسمت بعدی این آموزش قصد داریم به معرفی Dynamic Type ها در این زبان بپردازیم.

      QR:  جلسه ۰۹ : Anonymous Type در #C
      به اشتراک بگذارید