c#基礎,面試前迅速鞏固c#最基礎知識點

來源:互聯網
上載者:User

標籤:

n年前為了面試,搜羅的C#基礎知識,記在了文檔裡。今天寫到部落格園裡,與人分享,因為不是專家,所以僅供參考。

1.物件導向

  在物件導向概念提出之前,語言都是面向過程的,說到物件導向,應該與面向過程比較,這樣理解會更清晰。顧名思義,面向過程強調的是過程,物件導向強調的是對象。

  下面通過“關門”這個例子,說明兩者的的區別,以便協助理解物件導向的概念。

  面向過程做這一件的思路是:去把門關上。

  小明是個乖巧聽話的學生,他輕輕的把門關上;小強比較好動,他一腳把門踹上了。因為面向過程強調的是過程,那麼不同的人去做這件事,方式可能會不一樣,如果有100個

人,可能有100中方法,在實際項目開發中,我們解決一個問題,我們要為100個人定製100個方法,這是不能想象的。

  物件導向就很好的解決了此問題,物件導向思路:門被關了

  我們把“門被關了”看做是一對象,不管是小明還是小強,或者小紅,他們只要找到這個對象就完成了任務,這樣1000人過來,用的都是一個對象,屏蔽了人的差異性,實現了代碼的通用性。

  物件導向的三大特性:封裝,繼承,多態

 

2.建構函式(方法)

  作用:初始化對象(給對象的每個屬性一次賦值),是一種特殊的方法

  1)建構函式沒有傳回值,連void也不能寫

  2)建構函式名必須和類名一樣

  3)建立對象時會執行建構函式

  4)建構函式可以有重載

  5)類中會有一個預設的無參數建構函式,當你寫了一個新的建構函式(有或無參數),預設的無參數建構函式就沒有了。

 

3.解構函式(方法)

  樣式:~類名(){ },程式結束時才執行,協助釋放資源。

 

4.實值型別和參考型別

  1)實值型別:基礎資料型別 (Elementary Data Type)(int,bool,char,decimal等),結構,枚舉

    參考型別:string,類,數組,介面,委託,集合

  2)實值型別傳遞方式為值傳遞,傳遞的是值本身,參考型別的傳遞方式為引用傳遞,傳遞的是這個對象的引用

  3)實值型別一般儲存在記憶體的棧中(根據申明的位置決定,可能會在堆中),參考型別總是儲存在記憶體的堆中

  4)裝箱就是將實值型別轉換為參考型別,拆箱就是將參考型別轉換為實值型別。

 

5.存取修飾詞 

  1)public :公開的公用的

  2)private:私人的,只能在當前類的內部訪問

  3)protected:受保護的,只能在當前類的內部以及該類的子類中訪問。

  4)internal:只能在當前項目中訪問。在同一個項目中,internal和public的許可權是一樣。

 

6.繼承

  1)子類繼承了父類的屬性和方法,但是子類並沒有繼承父類的私人成員

  2)子類並沒有繼承父類的建構函式,但是,子類會預設的調用父類無參數的建構函式,建立父類對象,讓子類可以使用父類中的成員。所以,如果在父類中重新寫了一個有參數的建構函式之後,那個無參數的就沒有了,子類就調用不到了,子類就會報錯。

  3)c#是單繼承,一個類只能繼承一個父類,object是所有類的基類。

 

7.靜態類和非靜態類

  記憶體中一般有三Block Storage地區,棧,堆和靜態儲存地區,靜態對象就儲存在靜態儲存地區中

  1)在非靜態類中,既可以有非靜態成員,也可以有靜態成員;靜態類中只允許有靜態成員

  2)類中的靜態成員屬於類,不屬於對象

  3)靜態類不能被執行個體化

  4)在調用非靜態成員的時候,需要使用對象名.非靜態成員;在調用靜態成員的時候,需要使  用類名.靜態成員名

  5)如果你想要你的類當做一個"工具類"去使用,這個時候可以考慮將類寫成靜態,靜態類在整個項目中資源共用。

 

8.多態

  1)實現多態的三種手段:虛方法,抽象類別,介面。

  2)如果父類中的方法有預設的實現,並且父類需要被執行個體化,這時可以考慮將父類定義成一個普通類,用虛方法來實現多態;如果父類中的方法沒有預設實現,父類也不需要被執行個體化,則可以將該類定義為抽象類別。

 

9.抽象類別

  1)抽象成員必須標記為abstract,並且抽象方法不能有任何實現。

  2)抽象成員必須在抽象類別中。

  3)抽象類別不能被執行個體化

  4)子類繼承抽象類別後,必須把父類中的所有抽象方法都重寫

  5)抽象成員的存取修飾詞不能是private

  6)在抽象類別中可以包含執行個體成員,並且抽象類別的執行個體成員可以不被子類實現

  7)抽象類別是有建構函式的。雖然不能被執行個體化

  8)如果父類的抽象方法中有參數,那麼。繼承這個抽象父類的子類在重寫父類的方法的時候必須傳入對應的參數;如果抽象父類的抽象方法中有傳回值,那麼子類在重寫這個抽象方法的時候 也必須要傳入傳回值

 

10.介面

  1)介面不能被執行個體化

  2)只要一個類繼承了一個介面,這個類就必須實現這個介面中所有的方法

  3)介面中的成員不能加“存取修飾詞”,預設為public,不能修改,介面中的方法不能有任何實現

  4)介面中只能有方法、屬性、索引器、事件,不能有“欄位”和建構函式

  5)介面與介面之間可以繼承,並且可以多繼承,介面並不能去繼承一個類,而類可以繼承介面

  6)一個類可以同時繼承一個類並實現多個介面,如果一個子類同時繼承了父類A,並實現了介面IA,那麼文法上A必須寫在IA的前面

  7)當一個抽象類別實現介面的時候,需要子類去實現介面

 

註:以上只是點僅供參考,有錯誤處,敬請諒解!如果指出錯誤處,立即更改!

 

c#基礎,面試前迅速鞏固c#最基礎知識點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.