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



  • ۲۵
  • مرداد

جلسه ۳۷ : محدودیت های generic در #C

  • دسته‌بندی‌ها :
جلسه ۳۷ : محدودیت های generic در #C
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با مبحث generic ها در #C آشنا شدید. در این بخش قصد داریم شما را با محدودیت های generic در #C و انواع محدودیت های عمومی در سی شارپ آنها آشنا کنیم.

      مثال : 

       

      گاهی وقت ها، نیاز داریم که زمان ساخت شئ، T در GenericType، تنها نوع داده ای که از نوع Value Type و یا فقط Reference Typeباشد را قبول کند. برای اینکار، می توانیم از Constraint ها استفاده کنیم.

      برای استفاده از Constraint ها از کلمه کلیدی where استفاده می کنیم.

      در مثال زیر، MyGenericClass محدودیت هایی را مشخص می کند که تنها با یک نوع ارجاعی می توانند با MyGenericClass استفاده شوند. این بدین معنی است نوع های Struct  و کلا مقدار محور نمیتوانند از آن استفاده کنند و اگر چنین شود کامپایلر خطایی را برمیگرداند.

      مثال : 

      بنابراین اکنون نمیتوانید int را به عنوان نوع نگهدارنده استفاده کنید. در زیر یک خطای زمان کامپایل ارائه می شود.

      مثال : 

      انواع رشته یا هر نوع کلاس معتبر هستند زیرا از انواع ارجاعی (reference type) هستند.

      مثال : 

       

      انواع محدودیت های عمومی :

      توضیحاتConstraint
      فقط انواع ارجاعی (reference type) را قبول می کندwhere T : class
      فقط انواع مقداری (value type) را قبول می کندwhere T: struct
      تنها کلاس هایی را میتوان استفاده کرد که سازنده پیش فرض داشته باشندwhere T: new()
      نوع آن باید از کلاس پایه مشخص باشد و یا از آن کلاس مشخص حاصل شده باشدwhere T: <base class name>
      باید از اینترفیس مشخص شده حاصل شده باشدwhere T: <interface name>
      نوع عرضه شده برای T باید از آرگمان ارائه شده برای U باشد یا از آن حاصل شود.where T: U

       

      یک کلاس عمومی می تواند محدودیت های چندگانه را داشته باشد که در زیر نشان داده شده است.

      مثال : 

       

      اعمال محدودیت روی متدهای generic :

      به کد زیر دقت کنید :

      مثال : 

       

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

      1. با اعمال محدودیت (Constraints) میتوان انواع مجاز را در generic ها مشخص کرد.
      2. محدودیت ها را می توان با استفاده از کلمه کلیدی where مورد استفاده قرار داد.
      3. شش نوع محدودیت را می توان اعمال کرد: Class ، struct، new ، نام کلاس پایه، رابط و نوع مشتق شده.
      4. میتوان از چند محدودیت استفاده کرد.

       

      در این قسمت با نحوه اعمال محدودیت (constraints) روی generic ها آشنا شدید.

      در جلسه بعد قصد داریم در رابطه با مجموعه های عمومی (Generic Collection) در #C صحبت کنیم.

      QR:  جلسه ۳۷ : محدودیت های generic در #C
      به اشتراک بگذارید