程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 《Effective C#》:區別四個判等函數(2)

《Effective C#》:區別四個判等函數(2)

編輯:關於C語言

這是因為在此函數中要用到具體類型的兩個判等函數 ,不過就函數本身而言,該做的判斷都做了,因此不需要去重載添加復雜的操作 。

為了更好的述說剩下兩個函數,先解釋一下等價的意義。對於等價的 意義,就是自反、對稱以及傳遞。

所謂自反,即a == a;

而對稱 ,是a == b,則b == a;

傳遞是 a == b,b == c,則 a == c;

理解等價的意義後,那麼在實現類型的判等函數也要滿足這個等價規則。

對於可以重載的兩個判等函數,首先來介紹的是類型的Equals函數,其 大致形式如下:

public override bool Equals( object right );

那麼對於一個類型的Equals要做些什麼操作呢,一般來說大致 如下:

public class KeyData
{
 private int nData;
 public int Data
 {
  get{ return nData;}
  set{ nData = value; }
 }
 public override bool Equals( object right )
 {
  //Check null
  if( right == null )
   return false;
  //check reference equality
  if( object.ReferenceEquals( this, right ) )
    return true;
  //check type
  if( this.GetType() != right.GetType() )
   return false;
  //convert to current type
  KeyData rightASKeyData = right as KeyData;
  //check members value
  return this.Data == rightASKeyData.Data;
 }
}

如上增加了一個類型檢 查,即

if( this.GetType() != right.GetType() )

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved