Witam
Mam zdefiniowany typ
reservation {
int NumberOfGroup ;
int TypeOfReservation;
}
Mam listę takich obiektów, i chciałbym żeby polecenie list.Remove(new reservation(int,int)) działało tak jak dla typów wbudowanych. Z tego co wyczytałem, listy są porównywane za pomocą EqualityComparer(Of T).Default, więc zgodnie z dokumentacja MSDN utworzyłem następującą klasę
public class ReservationComparer : EqualityComparer<reservation>
{
public override int GetHashCode(reservation r)
{
int Chcode = r.NumberOfGroup + r.TypeOfReservation;
return Chcode.GetHashCode();
}
public override bool Equals(reservation r1, reservation r2)
{
if (r1.NumberOfGroup == r2.NumberOfGroup && r1.TypeOfReservation == r2.TypeOfReservation)
return true;
else
return false;
}
}
Ale to chyba nie o to chodziło, spróbowałem przeciążyć operator == ale to też nie pomogło.
Co robię źle?
public static bool operator ==(reservation r1, reservation r2)
{
if (r1.NumberOfGroup == r2.NumberOfGroup && r1.TypeOfReservation == r2.TypeOfReservation)
return true;
else
return false;
}
public static bool operator !=(reservation r1, reservation r2)
{
if (r1.NumberOfGroup == r2.NumberOfGroup && r1.TypeOfReservation == r2.TypeOfReservation)
return false;
else
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
public override bool Equals(object obj)
{
return base.Equals(obj);
}