当前位置:编程学习 > C#/ASP.NET >>

自定义类型的equals方法的实现

如果我们要创建一个类,无论是引用还是值类型的,经常要实现equals方法,下面把这两种一般的实现方式写在这里

1.引用类型的实现

 

        class MyRefType : BaseType {
            RefType refobj; //引用类型的对象
            ValType valobj; //值类型的对象
            public override bool Equals(object obj)
            {
                //当基类实现了equals时,首先要调用基类的equals方法,然后再进行别的,如果基类没有重写equals方法,那么这个判断可以去掉
                if (!base.Equals(obj)) return false;
                //因为this不肯能null,所以如果obj为null,将不可能相等
                if (obj == null) {
                    return false;
                }
                //如果两个对象的类型不一样,将不可能相等
                if (this.GetType() != obj.GetType()) return false;
                //
                MyRefType other = (MyRefType )obj;
                if (!Object.Equals(refobj, other.refobj)) return false;  //引用类型中无论是什么类型那个的变量都可以用object的静态equals方法进行判断,但是值类型的类的equals方法在这里是有区别的,引用可以用,但是值类型变量就改变了
                if (!Object.Equals(valobj, other.valobj)) return false;
                return true;
            }
            //当重写了equals方法是,一定要“==”和“!=”进行重写
            public static Boolean operator ==(MyRefType o1, MyRefType o2) {
                return object.Equals(o1,o2);
            }
            public static Boolean operator !=(MyRefType o1, MyRefType o2) {
                return
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,