PDA

View Full Version : کلاس Generic



amin_679
شنبه 19 خرداد 1386, 14:34 عصر
از دوستان عزیز خواهش میکنم راجع به این کلاس به طور کامل توضیح دهید ممنون میشم

Keramatifar
شنبه 19 خرداد 1386, 15:53 عصر
دوست عزیز

به زبان ساده کلاسهای [Generic] کلاسهایی هستند که نوع داده آنها بصورت پارامتریک تعریف می شود. نحوه تعریف یک کلاس Genericاینجوریه مثال:
Public Class GClass <T>
{
Public T Field
}
در زمان تعریف شیء از این کلاس به این شکل عمل می کنیم:

GClass<int> obj=new GClass<int>();
obj.Field=5;

استفاده از کلاسهای Generic باعث میشه که بتونیم کلاسهایی با کاربری بالا بنویسیم. کلاسهای Generic هم باعث بالا رفتن قابلیت استفاده مجدد کلاس میشه و هم اصطلاحا میشه باهاش کلاسهای TypeSafe نوشت. مثلا تصور کنید که توی یه برنامه از ArrayList استفاده کردید. هر عضو ArrayListدر حقیقت یه شی از نوع Object است و این یعنی هر نوع داده ای رو میشه داخل اون قرار داد حالا تصور کنید که یهArrayList دارید که فقط می خواید اعداد int توی اون قرار بدید و در زمان خوندن اطلاعات داخل اون، اونا رو به int (کست) می کنید. ولی به هر دلیل اگه اعدادی به غیر از int داخل اون قرار بدید ذخیره میشه ولی در زمان خوندن اطلاعات به Error برخورد می کنید. این نوع ساختمان داده ها TypeSafe محسوب نمیشن. یه راه جلوگیری از همچین اشتباهاتی پیاده سازی این نوع ساختمان داده ها با استفاده از کلاسهای Generic است. چون در زمان تعریف شی از نوع کلاس Generic، نوع داده اون رو مشخص می کنید پس شی تولید شده TypeSafe محسوب میشه.
جالب اینکه اضافه کردن امکان Generic Class به دات نت باعث شده تا مایکروسافت مجبور بشه امکانات دیگه ای هم به اون اضافه کنه. این مبحث خیلی گستردس ولی فکر کنم برای آشنایی شما فعلا کافی باشه