//默认的隐式继承了Object public class Personal : Object { String name = null; Int32 age = 0; public override bool Equals(object obj) { //因为“this”当前类的实例对象不为,null, //所以如果obj为null,那么这两个对象不可能相等 if (obj == null) { return false; } //如果两个对象的类型不一样,他们也不会想的 if (this.GetType() != obj.GetType()) { return false; } //以上的代码执行完毕之后,我们知道obj既不为null,同时和当前的对象类型 //一直,此时便可以进行转型操作 Personal pl = (Personal)obj; //如果两个对象相等,那么该对象的值类型成员和引用类型成员都和当前的相等 //比较其中的引用字段 if (!Object.Equals(name, pl.name)) //如果其中的那么不相等 { return false; } if (!this.age.Equals(pl.age)) { return false; } return base.Equals(obj); } //重载操作符号 public static Boolean operator ==(Personal p1, Personal p2) { return Object.Equals(p1, p2); } public static Boolean operator !=(Personal p1, Personal p2) { return !(p1 == p2); } }