让我开始说明我知道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