PDA

View Full Version : سوال: override ToString



mhsmity
پنج شنبه 30 خرداد 1392, 14:56 عصر
با سلام
می خوام تابع ToString را override کنم به طوری که اگه ساعت 2 بود مقدار 02 برگردونه بشه
textBox1.Text = t.Hour.ToString();
توجه کنید که تابع ToString به ازای همه فیلدهای کلاس Time، اورراید شده باشد.
یعنی باید تابع ToString در کلاس int رو حتما override کنم.
چون متعیر Hour از نوع int تعریف شده تو این کلاسه هستش.
راه حل شما چیه ؟
public override string ToString()
{
string b = base.ToString();
int l = base.ToString().Length;
string Ret = "00";

if (l == 1)
Ret = "0" + base.ToString();
if (l == 2)
Ret = base.ToString();

return Ret;
}

سوال دوم:
چه طوری یه تابع toint تعریف کنم که کاملا شبیح ToString باشه ولی به جای مقدار String مقدار int رو برگردونه
به کلاس time2 دققا کنید.

ممنون.

FastCode
پنج شنبه 30 خرداد 1392, 15:49 عصر
چرا از PadLeft استفاده نکردی؟
برای اون کار هم فکر میکنم TrimStart و Int.Parse مناسب باشن

Mahmoud.Afrad
پنج شنبه 30 خرداد 1392, 17:58 عصر
متد ToString فرمت پذیر هست. به اینصورت متد ToString کلاس Time را Override کنید:

public override string ToString()
{
return hour + ":" + minute + ":" + second;
}

ساعت و دقیقه و ثانیه هم جایی که نیاز به تبدیل به رشته هست میتونید به همین صورت عمل کنید.

Time t = new Time(1, 0, 0);
textBox1.Text = t.Hour.ToString("00");