Let me start off by stating that I know the assignment operator in C# cannot be overloaded/overridden. However, if I have a class like so:
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);
}
}
Two things:
1) Is the explicit conversion overload at the bottom necessary?
2) I want to do
Time newTime = 510;
and have Hour and Minute reflect the new minutes. Without making another object, is the only way to make a function like so:
public void changeminutes(int m)
{
this.minutes = m;
this.Hour = m / 60;
this.Minute = m % 60;
}
and do this:
Time newTime = new Time();
newTime.changeminutes(510);
edit:
I probably should have mentioned that I’m still in learning C#. A lot of your suggestions are flying over my head. Sorry.
next edit :
This isn’t necessarily about time. I just used it to illustrate my example.
You can create an implicit cast from
inttoTime.However, I recommend against it.
Unless they’re between equivalent types (eg,
intandlong), implicit casts will end up creating lots of confusion.In addition, it isn’t obvious that that should mean minutes and not seconds.
You can create a much nicer syntax using extension methods: