Мне нужно знать лучший способ сравнить два объекта и выяснить, если они равны. Я переопределяю GethashCode и Equals. Итак, базовый класс выглядит следующим образом:
public class Test
{
public int Value { get; set; }
public string String1 { get; set; }
public string String2 { get; set; }
public override int GetHashCode()
{
return Value ^ String1.GetHashCode() ^ String2.GetHashCode();
}
public override bool Equals( object obj )
{
return GetHashCode() == obj.GetHashCode();
}
}
Итак, для целей тестирования я создал два объекта:
Test t = new Test()
{
Value = 1,
String1 ="One",
String2 = "One"
};
Test t2 = new Test()
{
Value = 1,
String1 = "Two",
String2 = "Two"
};
bool areEqual = t.Equals( t2 );
При тестировании thisEqual возвращает истинное событие, хотя оба объекта разные. Я понимаю, что это потому, что String1 и String2 имеют одинаковое значение в каждом объекте и, таким образом, отменяют друг друга при хешировании.
Есть ли лучший способ отключить хеширующий объект, чтобы метод, который у меня есть, разрешил мою проблему?