using System;
public class CSharpLab
{
class MyClass
{
public string Id;
public MyClass(string id)
{
Id = id;
}
}
class HiClass
{
public string Id;
public HiClass(string id)
{
Id = id;
}
//REF:http://msdn.microsoft.com/en-us/library/ms173147%28VS.80%29.aspx
public override bool Equals(object obj) {
if (obj == null) return false;
HiClass t = obj as HiClass;
if ((object)t == null) return false;
return t.Id == this.Id;
}
public bool Equals(HiClass c) {
if ((object)c == null) return false;
return this.Id == c.Id;
}
public override int GetHashCode()
{
return this.Id.GetHashCode();
}
public static bool operator ==(HiClass a, HiClass b)
{
if (object.ReferenceEquals(a, b)) return true;
if ((object)a == null || (object)b == null)
return false;
return a.Equals(b);
}
public static bool operator !=(HiClass a, HiClass b)
{
return !(a==b);
}
}
public static void Test()
{
MyClass a = new MyClass("A");
MyClass b = new MyClass("A");
MyClass c = a;
Console.WriteLine("a == b -> {0}", a == b);
Console.WriteLine("a.Equals(b) -> {0}", a.Equals(b));
Console.WriteLine("a == c -> {0}", a == c);
Console.WriteLine("a.Equals(c) -> {0}", a.Equals(c));
HiClass d = new HiClass("A");
HiClass e = new HiClass("A");
Console.WriteLine("d == e -> {0}", d == e);
Console.WriteLine("d.Equals(e) -> {0}", d.Equals(e));
Console.WriteLine("object.ReferenceEquals(d, e) -> {0}",
object.ReferenceEquals(d, e));
}
}