По крайне жутким причинам у меня есть эта структура в приложении для моих работодателей.Равны не работают на structs?
Я попытался переопределить оператор равенства, но получаю ошибку Error 9 Operator '==' cannot be applied to operands of type 'TR_St_DateTime' and 'TR_St_DateTime'
.
Что мне не хватает?
public struct TR_St_DateTime : IEquatable<TR_St_DateTime>
{
public int Year;
public int Month;
public int Day;
public int Hour;
public int Minute;
public int Second;
public TR_St_DateTime(DateTime time)
{
Day = time.Day;
Hour = time.Hour;
Minute = time.Minute;
Second = time.Second;
Month = time.Month;
Year = time.Year;
}
public override bool Equals(object obj)
{
TR_St_DateTime o = (TR_St_DateTime) obj;
return Equals(o);
}
public override int GetHashCode()
{
return Year^Month^Day^Hour^Minute^Second;
}
public override string ToString()
{
return String.Format("{0}/{1}/{2}", Day, Month, Year);
}
public bool Equals(TR_St_DateTime other)
{
return ((Day == other.Day) && (Month == other.Month) && (Year == other.Year) && (Minute == other.Minute) && (Hour == other.Hour) && (Second == other.Second));
}
}
UPDATE: кажется, что ==
не работает, но Equals
делает.
Нет необходимости в реализации Equals
на structs.
Какая ошибка? –
Ошибка Оператор '==' не может быть применен к операндам типа «TR_St_DateTime» и «TR_St_DateTime» – Nahum
Оператор == - это не то же самое, что метод Equals, и действительно часто дает другой результат. – harold