c# How to find if two objects are equal
- by Simon G
Hi,
I'm needing to know the best way to compare two objects and to find out if there equal. I'm overriding both GethashCode and Equals. So a basic class looks like:
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();
    }
}
So for testing purposes I created two objects:
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 );
In testing this areEqual returns true event though both objects are different. I realise this is because String1 and String2 are the same value in each object and thus cancels each other out when hashing. 
Is there a better way off hashing object that the method I have that will resolve my issue?