C#base和this的區別

來源:互聯網
上載者:User

標籤:父類   無法   小結   派生   元素   規則   作用   允許   原因   

前言:

今天我一個剛學c#的朋友突然問我base怎麼用,突然把我問住了,想起我當年學c#基礎的時候基本都是虎頭蛇尾,很是後悔,於是趕緊百度了下,寫了這篇部落格記錄下來。

base:
用於在衍生類別中實現對基類公有或者受保護的成員的訪問,但是只局限在建構函式、執行個體方法和執行個體屬性訪問器中。
MSDN中小結的具體功能包括:
    (1)調用基類上已被其他方法重寫的方法。 
    (2)指定建立衍生類別執行個體時應調用的基類建構函式。
base常用於,在衍生類別對象初始化時和基類進行通訊。 
base可以訪問基類的公有成員和受保護的成員,私人成員是不可訪問的。
在多層繼承中,base可以指向的父類的方法有兩種情況:一是有重載存在的情況下,base將指向直接繼承的父類成員的方法;而沒有重載存在的情況下,base可以指向任何上級父類的公有或者受保護方法。 
this:
用於引用類的當前執行個體,也包括繼承而來的方法,通常可以隱藏this。
MSDN中的小結功能主要包括:

    (1)限定被相似的名稱隱藏的成員 
    (2)將對象作為參數傳遞到其他方法 
    (3)聲明索引器 
this指代類對象本身,用於訪問本類的所有常量、欄位、屬性和方法成員,而且不管訪問元素是任何存取層級。因為,this僅僅局限於對象內部,對象外部是無法看到的,這就是this的基本思想。另外,靜態成員不是對象的一部分,因此不能在靜態方法中引用this。

通用規則:

1、盡量少用或者不用base和this。除了避開子類的名稱衝突和在一個建構函式中調用其他的建構函式之外,base和this的使用容易引起不必要的結果。 
2、在靜態成員中使用base和this都是不允許的。原因是,base和this訪問的都是類的執行個體,也就是對象,而靜態成員只能由類來訪問,不能由對象來訪問。 
3、base是為了實現多態而設計的。 
4、使用this或base關鍵字只能指定一個建構函式,也就是說不可同時將this和base作用在一個建構函式上。 
5、簡單的來說,base用於在衍生類別中訪問重寫的基類成員;而this用於訪問本類的成員,當然也包括繼承而來公有和保護成員。 
6、除了base,訪問基類成員的另外一種方式是:顯示的類型轉換來實現。只是該方法不能為靜態方法。

感言:

1.基礎打不牢,學問攀不高,想要在寫代碼方面有一些突出的成績,除了勤學苦練,穩固的基礎是必不可少的。

2.我會在近期預定一個c#基礎學習計劃,預計一個月。

C#base和this的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.