程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 自定義類型的equals方法的實現

自定義類型的equals方法的實現

編輯:C#入門知識

如果我們要創建一個類,無論是引用還是值類型的,經常要實現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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved