PDA

View Full Version : آموزش: سربارگذاری عمگرها(operator overloading)



محسن شامحمدی
پنج شنبه 27 آبان 1389, 09:00 صبح
سلام دوستان.
اینطوری که من متوجه شدم اکثر دوستانی که با زبان vb.Net کار می کنن فکر می کنن وی بی دات نت از تکنولوژی سربارگذاری عمگرها(operator overloading) پشتیبانی نمی کنه و این قضیه رو فقط زبان های خانواده سی دارن.

ولی من امروز اومدم تا به شما عزیزان نحوه سربارگذاری عمگرها(operator overloading) در vb.NEt رو به شما آموزش بدم.

تحلیل مساله:
فرض کنید کلاسی داریم به نام Student .
که فیلدهای زیر رو داره:
Public name
Public avg

حالا ما از این کلاس 2 شی می سازیم به نام های Bill و John
Dim Bill, John As New student
ما به این اشیا مقدار می دیم.

Bill.name = "Bill Clinton"
Bill.avg = 15
John.name = "John Valjan"
John.avg = 5
خب حالا اصل قضیه اینه که ما با یک دستور ساده چطوری معدل این دو تا رو با هم جمع کنیم.

مثلا چقدر جالب می شد اگه می زدی :

MsgBox(Bill + John)
و بعد معدل هاشون با هم جمع می شد و پیام می داد.
.
.
.
.
.

خب عجله نکنید یادتون می دم:
بیاید توی کلاس Student و این کد رو بنویسید.
Public Shared Operator +(ByVal a As student, ByVal b As student)
Return a.avg + b.avg
End Operator

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

Dim Bill, John As New student
Bill.name = "Bill Clinton"
Bill.avg = 15
John.name = "John Valjan"
John.avg = 5
MsgBox(Bill + John)

اصل مقاله در مایکروسافت (http://msdn.microsoft.com/en-us/library/ms379613%28VS.80%29.aspx)
اگر به نظرتون مطلب جدیدی بود و ارزش زدن کلید تشکر رو داشت پس فراموش نکنید.

محسن شامحمدی
پنج شنبه 27 آبان 1389, 11:44 صبح
سورسش رو هم می ذارم واسه درک بهتر قضیه

محسن شامحمدی
پنج شنبه 27 آبان 1389, 14:44 عصر
ضمنا به جز عملگر جمع این ها رو هم می شه overload کرد.
+ - * / \ & Like Mod And Or Xor
^ << >> = <> > < >= <=