احب ان اشارك مبادئ ال generic. في البداية سنتعلم ماهي المشكلة ثم سنقوم بحلها بأستخدام ال generic
وصف المشكلة
---------------
اولا نقوم بعمل ال class التالي:
class CompareClass
{
public bool Compare(string x, string y)
{
if (x.Equals(y))
return true;
else
return false;
}
public bool Compare(int x, int y)
{
if (x.Equals(y))
return true;
else
return false;
}
}
شرح الكود:
----------
١- لقد عملنا باسم CompareClass
٢- داخل الكلاس عملنا دالتين مقارنة، الاولى لمقارنة السلاسل الحرفية والاخرى لمقارنة الارقام int
٣- هذا يعني ان الكلاس يحتوي على تحميل زائد method overloading
المشكلة
--------
الان اذا اردنا عمل مقارنة لنوع بيانات من النوع real او كائنات فأن الكود اعلاه لن يعمل وسنحتاج الى عمل دالات ذات تحميل زائد للبيانات المذكورة توا!
نستطيع حل هذه المشكلة عن طريق generic class
الحل:
--------
اعمل كلس محتويا على الكود التالي:
class CompareGenericClass<T>
{
public bool Compare(T x, T y)
{
if (x.Equals(y))
return true;
else
return false;
}
}
فهم الكود
-----------
1- لقد قمنا بعمل كلاس CompareGenericClass والذي يحتوي على المدخل T اي ان الكلاس سيكون CompareGenericClass<T>
2- هنا T سيكون هو نوع البيانات
3- اذا اردنا مقارنة السلاسل الحرفية string فأننا سنعمل التالي:
CompareGenericClass<string> Ocompare = new CompareGenericClass<string>();bool stringResult=Ocompare.Compare("DEVESH", "DEVESH");
4- نفس الشيء تقريبا اذا اردنا مقارنة الارقام int:
CompareGenericClass<int> oIntcompare = new CompareGenericClass<int>(); bool
integerresult=oIntcompare.Compare(5, 6);
تنفيذ البرنامج:
------------
الكود كاملاَ:
-----------
class CompareClass
{
public bool Compare(string x, string y)
{
if (x.Equals(y))
return true;
else
return false;
}
public bool Compare(int x, int y)
{
if (x.Equals(y))
return true;
else
return false;
}
}
class CompareGenericClass<T>
{
public bool Compare(T x, T y)
{
if (x.Equals(y))
return true;
else
return false;
}
}
class Program
{
static void Main(string[] args)
{
CompareClass obj = new CompareClass();
bool intresult = obj.Compare(5, 7);
Console.WriteLine("int comapre result:" + intresult);
bool stringresult = obj.Compare("DEVESH", "DEVESH");
Console.WriteLine("string comapre result:" + stringresult);
CompareGenericClass<string> Ocompare = new CompareGenericClass<string>();
bool stringResult = Ocompare.Compare("DEVESH", "DEVESH");
Console.WriteLine("Generic string comapre result:" + stringResult);
CompareGenericClass<int> oIntcompare = new CompareGenericClass<int>();
bool integerresult = oIntcompare.Compare(5, 6);
Console.WriteLine("Generic int comapre result:" + integerresult);
}
}
الموضوع الاصلي:
-------------------
ليست هناك تعليقات:
إرسال تعليق