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



  • ۲۵
  • مرداد

جلسه ۳۶ : معرفی Generic ها در #C

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

      مقدمه :

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

      Generic ها در C# 2.0  به این زبان اضافه شد و به شما اجازه می دهد یک کلاس با متغیرهایی با انواع فیلدها، متد ها، پارامترها و … تعریف کنید. Generics جایگزین این متغیرهای با نوع خاص، در زمان کامپایل می شود.

      یک کلاس عمومی را می توان با استفاده از علامتهای بازوبسته <> تعریف کرد. به عنوان مثال، در زیر یک کلاس عمومی (generic) با یک متغیر نوع عمومی (Generic)، تعریف شده است.

      مثال : 

      همانطور که در کد بالا دیده می شود، MyGenericClass بهمراه علامت <T> تعریف شده است. علامت <> نشان می دهد که MyGenericClass عمومی است و نوع آن را بعدا تعریف می کند،و در حال حاضر آن را  T می نامیم. شما می توانید هر کاراکتر یا کلمه را به جای T وارد کنید.

      حالا ، کامپایلر نوع مشخص شده را در هنگام ایجاد یک کلاس به آن اختصاص می دهد. به عنوان مثال، کد زیر از نوع داده int استفاده می کند:

      مثال : 

      خروجی :

      مثال : 

      شکل زیر نشان می دهد که چگونه کامپایلر T را با int در MyGenericClass جایگزین می کند.

      generic class

      generic class

       

      در کدهای بالا کلاس MyGenericClass به صورت زیر کامپایل می شود.

      مثال : 

      شما می توانید از هر نوع داده ای در هنگام ایجاد MyGenericClass استفاده کنید. به عنوان مثال، مثال زیر از نوع رشته استفاده می کند.

      مثال : 

      خروجی :

      مثال : 

       

      استفاده از generic class به عنوان کلاس پایه :

      وقتی که از یک کلاس پایه عمومی استفاده می کنید، شما باید یک نوع آرگومان بجای پارامتر نوع عمومی کلاس پایه همانطور که در زیر نشان داده شده است ارائه دهید.

      مثال : 

      اگر شما می خواهید از کلاس عمومی ارث بری کنید ، نیازی به مشخص کردن نوع برای کلاس پایه عمومی نیست. همانند مثال زیر :

      مثال : 

      اگر کلاس پایه عمومی دارای محدودیت باشد، کلاس مشتق شده باید از همان محدودیت ها استفاده کند.

      مثال : 

       

      Generic Delegates :

      همانطور که در بخش قبلی آموخته اید، ساختار delegate باید دقیقا شبیه متدی باشد که آن را فراخوانی می کند. delegate عمومی نیز می تواند به همان شکل با نوع عمومی تعریف شود.

      برای مثال، delegate عمومی زیر را در نظر بگیرید که دو پارامتر عمومی را می گیرد:

      مثال : 

      خروجی :

      مثال : 

      در مثال بالا، متد add یک delegate عمومی است که در متد Main به صورت دو نوع int  و String فراخوانی شده است.

      در ابتدا این delegate به متد AddNumber اشاره می کند که دارای پارامترهای نوع int است. و در ادامه کدها به متد Concate اشاره می کند که دارای پارامتر های نوع رشته هستند ، به این ترتیب، شما می توانید در delegate های عمومی از انواع مختلف پارامترها استفاده کنید.

      نکته : یک delegate عمومی می تواند به متدهایی با انواع پارامترهای مختلف اشاره کند. ولی، تعداد پارامترها باید یکسان باشند.

       

      میتوان از Generic ها در موارد زیر استفاده کرد :

      • Interface
      • Abstract class
      • Class
      • Method
      • Static method
      • Property
      • Event
      • Delegates
      • Operator

       

      مزایای  Generics :

      1. قابلیت استفاده مجدد کد را افزایش می دهد.
      2. Generic نوع ایمن هستند. این بدان معناست که شما می توانید از خطاهای زمان کامپایل در صورت استفاده از داده های مختلف ،استفاده کنید.
      3. Generic یک مزیت عملکردی دارد زیرا امکانات boxing و unboxing را از بین می برد.

       

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

      1. Generic ها با براکت زاویه <> در #C مشخص می شوند.
      2. کامپایلر نوع مشخص شده برای generic ها را در زمان کامپایل اعمال می کند.
      3. Generics را می توان برای interface, abstract class, method, static method, property, event, delegate و operator اعمال کرد.
      4. Generics بدون انجام boxing و unboxing سریعتر انجام می شود.

       

      در این بخش با generic ها در زبان #C آشنا شدید.

      در قسمت بعدی قصد داریم در رابطه با محدودیت ها (Constraints) در generic صحبت کنیم.

      QR:  جلسه ۳۶ : معرفی Generic ها در #C
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر
      2. تصویر کاربر
      3. تصویر کاربر