شی گرائی (بخش نوزدهم)
جنریک ها (Generics)
جنریک ها کلاسها، متدها یا رابط هایی هستند که بسته به نوع داده ای که به آنها اختصاص داده می شود رفتارشان را سازگار می کنند.
جنریک ها از ورژن 2 به بعد به سی شارپ اضافه شدند. به عنوان مثال می توان یک متد جنریک تعریف کرد که هر نوع داده ای را قبول کند.
کلاس ها ، متد ها ، struct ها ، اینترفیس ها(Interfaces) ، و Event ها ، Delegate ها می تونن به صورت Generic تعریف بشن.
جنریک ها را دردنیای واقعی مانند یک بطری شیشه ای در نظر بگیرید که درون اون بطری ممکنه آب باشه یا نوشابه یا هر چیز دیگه ... درواقع ما بطری را می سازیم وهر چیزی که در داخل اون قرار بگیره بطری هم ماهیت اونو به خودش میگیره.
بهترین مثال برای جنریک در سی شارپ نوشتن تابع جمع دو عدد هست به کد زیر دقت کنید :
کد PHP:
class Class1
{
public int sum(int a, int b)
{
return (a + b);
}
public double sum(double a, double b)
{
return (a + b);
}
}
حالا ممکنه دو مقداری که ما وارد می کنیم رشته باشه پس باید دوباره یک تابع بنویسیم که string بگیره، پس... برای جلوگیری ازهمه این ها باید از جنریک ها استفاده کنیم.
خب من برای این که دیگه اون قسمت بالارو تکرار نکنم میام برای کلاس جنریکم یه نماد میزارم که بدونم با اون تا آخر برنامه کار میکنم واون نماد برای جنریک های من مورد استفاده قرار میگیره ببنید :
کد PHP:
public void Swap(T a, T b)
{
T c = a;
a = b;
b = c;
}
نماد من در اینجا T هست ، به جای swap هم میتونید نام دیگه ای در نظر بگیرید.