c# How to find if two objects are equal

Posted by Simon G on Stack Overflow See other posts from Stack Overflow or by Simon G
Published on 2010-05-27T10:46:25Z Indexed on 2010/05/27 10:51 UTC
Read the original article Hit count: 198

Filed under:
|
|
|

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?

© Stack Overflow or respective owner

Related posts about c#

Related posts about hash