base:
用於在派生類中實現對基類公有或者受保護成員的訪問,可是隻侷限在構造函數、實例方法和實例屬性訪問器中。
MSDN中小結的具體功能包括:
(1)調用基類上已被其餘方法重寫的方法。
(2)指定建立派生類實例時應調用的基類構造函數。
base經常使用於,在派生類對象初始化時和基類進行通訊。
base能夠訪問基類的公有成員和受保護成員,私有成員是不可訪問的。
在多層繼承中,base能夠指向的父類的方法有兩種狀況:一是有重載存在的狀況下,base將指向直接繼承的父類成員的方法;而沒有重載存在的狀況下,base能夠指向任何上級父類的公有或者受保護方法。
this:
用於引用類的當前實例,也包括繼承而來的方法,一般能夠隱藏this。
MSDN中的小結功能主要包括:app
(1)限定被類似的名稱隱藏的成員
(2)將對象做爲參數傳遞到其餘方法
(3)聲明索引器
this指代類對象自己,用於訪問本類的全部常量、字段、屬性和方法成員,並且無論訪問元素是任何訪問級別。由於,this僅僅侷限於對象內部,對象外部是沒法看到的,這就是this的基本思想。另外,靜態成員不是對象的一部分,所以不能在靜態方法中引用this。函數
通用規則:this
一、儘可能少用或者不用base和this。除了避開子類的名稱衝突和在一個構造函數中調用其餘的構造函數以外,base和this的使用容易引發沒必要要的結果。
二、在靜態成員中使用base和this都是不容許的。緣由是,base和this訪問的都是類的實例,也就是對象,而靜態成員只能由類來訪問,不能由對象來訪問。
三、base是爲了實現多態而設計的。
四、使用this或base關鍵字只能指定一個構造函數,也就是說不可同時將this和base做用在一個構造函數上。
五、簡單的來講,base用於在派生類中訪問重寫的基類成員;而this用於訪問本類的成員,固然也包括繼承而來公有和保護成員。
六、除了base,訪問基類成員的另一種方式是:顯示的類型轉換來實現。只是該方法不能爲靜態方法。設計