I try to implement IEqualityComparer:
class AddressComparer : IEqualityComparer<Address>
{
#region IEqualityComparer<Address> Members
public bool Equals(Address x, Address y)
{
return (x.CurrentBuildingNumber == y.CurrentBuildingNumber) && (x.CurrentBuildingLetter == y.CurrentBuildingLetter);
}
public int GetHashCode(Address obj)
{
return obj.StreetCode1 + obj.StreetCode2 + obj.BuildingNumber1 + obj.BuildingNumber2;
}
#endregion
}
Here is Address class:
public class Address : IComparable
{
public int StreetCode1 { get; set; }
public int BuildingNumber1 { get; set; }
public string BuildingLetter1 { get; set; }
public int StreetCode2 { get; set; }
public int BuildingNumber2 { get; set; }
public string BuildingLetter2 { get; set; }
}
The AddressComparer
works perfect if properies StreetCode
and BuildingNumber
of the Address
class are integers.
But what if I need to change the type of properies StreetCode
and BuildingNumber
in the Address
class to string:
public class Address : IComparable
{
public string StreetCode1 { get; set; }
public string BuildingNumber1 { get; set; }
public string BuildingLetter1 { get; set; }
public string StreetCode2 { get; set; }
public string BuildingNumber2 { get; set; }
public string BuildingLetter2 { get; set; }
}
Here is imlementation of the new AddressComparer
:
class AddressComparer : IEqualityComparer<Address>
{
#region IEqualityComparer<Address> Members
public bool Equals(Address x, Address y)
{
return String.Compare(x.CurrentBuildingNumber, y.CurrentBuildingNumber) && (x.CurrentBuildingLetter, y.CurrentBuildingLetter)
}
public int GetHashCode(Address obj)
{
//how to implement?
}
#endregion
}
How do I implement GetHashCode
method if my properies are strings?