PDA

View Full Version : override کردن متد ToString در یک کلاس



Developer Programmer
دوشنبه 17 خرداد 1389, 20:51 عصر
کلاس زیر رو در نظر بگیرین


class classTest
{
public classTest():base()
{}

public byte foool(byte a)
{
return ++a;
}

public override string ToString()
{
return "result is:" + base.ToString() ;

}

}
میخوام هر وقت متد ToString فراخوانی شد عبارت result is رو هم به رشته اضافه کنه یعنی هروقت تابع fool(2) فراخوانی شد، رشته result is 3 برگشت داده بشه


classTest cls = new classTest();

private void Form1_Load(object sender, EventArgs e)
{
Console.WriteLine(cls.foool(2).ToString());
}
}
چرا این اتفاق نمی افته ؟

Behrouz_Rad
دوشنبه 17 خرداد 1389, 21:02 عصر
چون شما داری متد ToString کلاس byte رو فراخوانی می کنی و اون متد هم به درستی معادل رشته ای 3 رو بر میگردونه! فراخوانی (2)foool یک شی از نوع byte رو برگشت میده نه شی ای از نوع کلاسی که ساختی.
اگر به صورت ذیل بنویسی نسخه ی override شده فراخوانی میشه:


Console.WriteLine(cls.ToString());


موفق باشید.