為基類沒有重寫Object.Equals 方法的參考型別實現Equals
來源:互聯網
上載者:User
// ==++== //// Copyright (c) OwnCom Corporation. All rights reserved.//// ==--== /*==============================================================================** ** Class: MyRefType**** Purpose: 為基類沒有重寫Object.Equals 方法的參考型別實現Equals****=============================================================================*/class MyRefType:BaseType{RefType retObj;//該欄位是一個參考型別ValueType:valObj;//該欄位是一個實值型別public overide boolean Equals(object obj){//如果基類有實現Equals方法// 首先讓基底類型比較其中的欄位//if(!base.Equals(obj)) return false;//如果obj 為null ,則不相等if(obj == null) return false;//如果兩個對象的類型不相同,則不相等if(this.GetType()!=obj.GetType()) return false;//將obj 轉換為定義的類型訪問其欄位。//注意這裡的轉型不會失敗,因為已經知道是同一個類型MyRefType other=(MyRefType) obj;//比較其中的參考型別的欄位if(!Object.Equals(refObj,other.refObj)) return false;//比較其中的實值型別的欄位,用該欄位類型的Equals方法if(!valobj.Equals(other.valobj)) return false;return true;}// 重載 ==和 != 操作符public static boolean operator== (MyRefType o1,MyRefType o2){return Object.Equals(o1,o2);}public static boolean operator!=(MyRefType o2,MyRefType o2){return !(o1==o2);}}