override کردن متد ToString در یک کلاس
کلاس زیر رو در نظر بگیرین
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());
}
}
چرا این اتفاق نمی افته ؟
نقل قول: override کردن متد ToString در یک کلاس
چون شما داری متد ToString کلاس byte رو فراخوانی می کنی و اون متد هم به درستی معادل رشته ای 3 رو بر میگردونه! فراخوانی (2)foool یک شی از نوع byte رو برگشت میده نه شی ای از نوع کلاسی که ساختی.
اگر به صورت ذیل بنویسی نسخه ی override شده فراخوانی میشه:
Console.WriteLine(cls.ToString());
موفق باشید.