آموزش سی شارپ - قسمت بیست و سوم
بازنويسي عملگرها در سي شارپ - Operator Overloading in csharp
تمامي عملگرها (operators) در سي شارپ داراي رفتار هاي از پيش تعيين شده اي هستند و شما مي توانيد از اين عملگرها در عبارت هاي خود استفاده کنين:
int i = 10;
int j = 20;
int m = i * j / 2 + 14;
Console.WriteLine("m is :{0}",m);
اما اگر شما عبارت زير را بنويسيد چطور؟
Person p = new Person("Ali",20);
Person p2 = new Person("Reza",30);
Person p3 = p + p2;
Console.WriteLine("Name: {0}, Age:{1}",p3.Name , p3.Age);
در صورتيکه اين کد را Compile کنين متوجه يک خطاي Compile Time خواهيد شد که به شما توضيح مي دهد که امکان جمع بستن دو Person با يکديگر وجود ندارد يا به عبارت ديگر عملگر + براي Person تعريف نشده است.
در سي شارپ شما مي توانين بسياري از عملگرها را دوباره نويسي کنين به عبارت ديگر شما مي توانين در مواقع لزوم تعريف جديد از يک عملگر در سي شارپ داشته باشيم. در تصوير زير ليست عملگرها به همراه توضيحاتي راجع به امکان بازنويسي شان مي بينيد.

همانطور که در تصوير مشخص است شما نمي توانين تمام عملگرها را دوباره نويسي کنين.
در سي شارپ يک کلمه کليدي به نام operator وجود دارد که براي بازنويسي عملگرها بايد از آن استفاده کنيم. به عنوان مثال براي اينکه مثالي که در ابتدا نوشتيم درست عمل کند و وقتي عبارت بالا را اجرا مي کنيم يک شيء جديد از جنس Person ايجاد شود که نامش از جمع بستن نام اين دو فرد و سنش از جمع بستن سن اين دو فرد تشکيل شود من در کلاس Person اين کد را مي نويسم:
بارگزاري مثال
در سي شارپ شما مي توانين بسياري از عملگرها را دوباره نويسي کنين به عبارت ديگر شما مي توانين در مواقع لزوم تعريف جديد از يک عملگر در سي شارپ داشته باشيم. در تصوير زير ليست عملگرها به همراه توضيحاتي راجع به امکان بازنويسي شان مي بينيد.

همانطور که در تصوير مشخص است شما نمي توانين تمام عملگرها را دوباره نويسي کنين.
در سي شارپ يک کلمه کليدي به نام operator وجود دارد که براي بازنويسي عملگرها بايد از آن استفاده کنيم. به عنوان مثال براي اينکه مثالي که در ابتدا نوشتيم درست عمل کند و وقتي عبارت بالا را اجرا مي کنيم يک شيء جديد از جنس Person ايجاد شود که نامش از جمع بستن نام اين دو فرد و سنش از جمع بستن سن اين دو فرد تشکيل شود من در کلاس Person اين کد را مي نويسم:
public static Person operator +(Person p1, Person p2)
{
Person p = new Person();
p.Name = p1.Name + " " + p2.Name;
p.Age = p1.Age + p2.Age;
return p;
}
public static bool operator ==(Person p1, Person p2)
{
return p1.Name == p2.Name;
}
public static bool operator !=(Person p1, Person p2)
{
return !p1==p2;
}
بارگزاري مثال
+ نوشته شده در شنبه بیست و هشتم اردیبهشت ۱۳۸۷ ساعت 9:43 توسط مسعود طباطبايي | MasoudTB
|