2 回答

TA貢獻1810條經驗 獲得超4個贊
樓上的已經說的很明白了,現在說些他們的規則:Base 是子類中引用父類
This 是當前類,引用自己 1、盡量少用或者不用base和this。除了避開子類的名稱沖突和在一個構造函數中調用其他的構造函數之外,base和this的使用容易引起不必要的結果。
2、在靜態成員中使用base和this都是不允許的。原因是,base和this訪問的都是類的實例,也就是對象,而靜態成員只能由類來訪問,不能由對象來訪問。
3、base是為了實現多態而設計的。
4、使用this或base關鍵字只能指定一個構造函數,也就是說不可同時將this和base作用在一個構造函數上。
5、簡單的來說,base用于在派生類中訪問重寫的基類成員;而this用于訪問本類的成員,當然也包括繼承而來公有和保護成員。
6、除了base,訪問基類成員的另外一種方式是:顯示的類型轉換來實現。只是該方法不能為靜態方法。 希望我的回答對你有幫助,如果方便請設為滿意答案。

TA貢獻1843條經驗 獲得超7個贊
如果說你父類里面有一個成員比如int a;那么你子類里面也可以再定義一個int a,這個時候base.a和this.a表示的就不是一個變量了,如果說子類里面沒有,那么base.a和this.a表示的都是一個變量。還有就是重寫,覆蓋和構造函數里面調用父類的這個方法。可以用:base(),還有就是關于形參名和成員變量相同的時候,因為是就近原則,所以直接寫變量名字表示的就是形參,如果加了this表示的就是這個類的成員。C#里面的this和base 跟JAVA里面的this和super是一樣的。你在定義一個變量的時候有一個this引用,指向自身,還有一個引用base,指向父類。關于你說的那種情況就是我說的第一種,如果子類成員有和父類成員同名的時候,就必須用this和base區分。
- 2 回答
- 0 關注
- 729 瀏覽
添加回答
舉報