讓我開始說明我知道C#中的賦值運算符不能被重載/覆蓋。但是,如果我有像這樣一類:替代運算符重載
public class Time
{
private int Hour, Minute;
public int minutes;
public Time(int m)
{
this.minutes = m;
this.Hour = m/60;
this.Minute = m % 60;
}
public Time(int hh, int mm)
{
this.minutes = 60 * hh + mm;
this.Hour = hh;
this.Minute = mm;
}
public static explicit operator Time(int i1)
{
return new Time(i1);
}
}
兩件事情:
1)是在底部的顯式轉換超載有必要嗎?
2)我想要做
Time newTime = 510;
,並有小時和分鐘反映新分鐘。未做另一個目的,是讓像這樣的功能的唯一途徑:
public void changeminutes(int m)
{
this.minutes = m;
this.Hour = m/60;
this.Minute = m % 60;
}
,並做到這一點:
Time newTime = new Time();
newTime.changeminutes(510);
編輯:
我也許應該提到,我仍然在學習C#。很多你的建議都飛過了我的腦海。抱歉。
next編輯: 這不一定是關於時間。我只是用它來說明我的例子。
難道你不是指'隱式'而不是'顯式'嗎? – pickypg 2011-05-18 17:48:50
我推薦*不*執行'Time newTime = 510;'功能。這並不是立即顯而易見的。在你的最終代碼片段中,我知道沒有時間實現的完整知識,代碼正在做什麼。如果代碼不可用,'Time newTime = 510;'將是一個巨大的?在代碼的讀者部分。 – Amy 2011-05-18 17:48:56
爲了達到良好的設計效果,我建議遵循'DateTime'和'TimeSpan'類中的模式。 – Amy 2011-05-18 17:50:35