這篇文章主要介紹C#中NET的基礎知識點,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
NET的基礎知識點。
1、面向對象語言的三大特性:封裝、繼承、多態;
2、接口和類有什么異同:
不同點:
?、俳涌诓荒苤苯訉嵗?。
?、诮涌谥话椒ɑ驅傩缘穆暶?,不包含方法的實現。
?、劢涌诳梢远嗬^承,類只能單繼承。
?、鼙磉_的含義不同,接口主要定義一種規范,統一調用方法,也就是規范類,約束類,類是方法功能的實現和集合
相同點:
?、俳涌?、類和結構都可以從多個接口繼承。
?、诮涌陬愃朴诔橄蠡悾豪^承接口的任何非抽象類型都必須實現接口的所有成員。
?、劢涌诤皖惗伎梢园录?、索引器、方法和屬性。
3、抽象類和接口有什么異同
?、倮^承:接口支持多繼承;抽象類不能實現多繼承。
?、诒磉_的概念:接口用于規范,更強調契約,抽象類用于共性,強調父子。抽象類是一類事物的高度聚合,那么對于繼承抽象類的子類來說,對于抽象類來說,屬于"Is A"的關系;而接口是定義行為規 范,強調“Can Do”的關系,因此對于實現接口的子類來說,相對于接口來說,是"行為需要按照接口來完成"。
?、鄯椒▽崿F:對抽象類中的方法,即可以給出實現部分,也可以不給出;而接口的方法(抽象規則)都不能給出實現部分,接口中方法不能加修飾符。
?、茏宇愔貙懀豪^承類對于兩者所涉及方法的實現是不同的。繼承類對于抽象類所定義的抽象方法,可以不用重寫,也就是說,可以延用抽象類的方法;而對于接口類所定義的方法或者屬性來說,在繼承類 中必須重寫,給出相應的方法和屬性實現。
?、菪略龇椒ǖ挠绊懀涸诔橄箢愔?,新增一個方法的話,繼承類中可以不用作任何處理;而對于接口來說,則需要修改繼承類,提供新定義的方法。
?、藿涌诳梢宰饔糜谥殿愋停杜e可以實現接口)和引用類型;抽象類只能作用于引用類型。
?、呓涌诓荒馨侄魏鸵褜崿F的方法,接口只包含方法、屬性、索引器、事件的簽名;抽象類可以定義字段、屬性、包含有實現的方法。
4、virtual、sealed、override和abstract的區別
?、賤irtual申明虛方法的關鍵字,說明該方法可以被重寫
?、趕ealed說明該類不可被繼承
?、踥verride重寫基類的方法
?、躠bstract申明抽象類和抽象方法的關鍵字,抽象方法不提供實現,由子類實現,抽象類不可實例化。
5、重載(override)和重寫(overload)有什么區別
重載:當類包含兩個名稱相同但簽名不同(方法名相同,參數列表不相同)的方法時發生方法重載。用方法重載來提供在語義上完成相同而功能不同的方法。(一個類中、多個方法)
重寫:在類的繼承中使用,通過覆寫子類方法可以改變父類虛方法的實現。(二個類以上)
6、結構體和類的區別
?、俳Y構體是值類型,類是引用類型
?、诮Y構體不支持無慘構造函數,不支持析構函數,并且不能有protected修飾;
?、劢Y構體常用于數據存儲,類class多用于行為;
?、茴恈lass需要用new關鍵字實例化對象,struct可以不適用new關鍵字;
?、蓊恈lass可以為抽象類,struct不支持抽象;
7、out和ref的異同點
?、賠ef要求參數在使用之前要顯式初始化,out要在方法內部初始化;
?、趏ut適合用在需要retrun多個返回值的地方,而ref則用在需要被調用的方法修改調用者的引用的時候。
?、踨ef是有進有出,out是只出不進;(ref可以把參數的數值傳遞進函數,但是out是要把參數清空,就是說你無法把一個數值從out傳遞進去的,out進去后,參數的數值為空)
8、值類型和引用類型的區別
?、僦殿愋?就是一個包含實際數據的量。即當定義一個值類型的變量時,C#會根據它所聲明的類型,以棧方式分配一塊大小相適應的存儲區域給這個變量,隨后對這個變量的讀或寫操作就直接在這塊內存 區域進行;
?、谝妙愋?一個引用類型的變量不存儲它們所代表的實際數據,而是存儲實際數據的引用。
引用類型分兩步創建:首先在棧上創建一個引用變量,然后在堆上創建對象本身,再把這個內存的句柄(也是內存的首地址)賦給引用變量;
9、什么是拆箱和裝箱
裝箱→值類型轉換為引用類型,拆箱→引用類型轉換為值類型。
10、裝箱和拆箱有什么性能影響?怎么解決呢?
?、儆绊懀憾忌婕暗絻却娴姆峙浜蛯ο蟮膭摻?,有較大的性能影響;
?、诮鉀Q:使用泛型
11、委托是什么?事件是不是委托?
?、傥校侯愃朴?C或 C++中的函數指針,允許將方法作為參數進行傳遞;(可以把一個方法作為參數代入另一個方法)
?、谑录翘厥獾奈?,事件內部是基于委托來實現的;
12、構造器Constructor是否可以被繼承?是否可以被Override?
Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading).
13、是否可以集成String類?
String類是final類所以不可以繼承string類。
14、當一個線程進入一個對象的方法后,其他線程是否可以進入該方法?
不可以,一個對象的方法只能由一個線程訪問。
15、用最有效的方法算出2乘以8等于幾?
2<<3(左乘,右除)
16、Error和Exception有是區別?
Error表示恢復不是不可能,但是很困難,Exception表示一種實際或實現問題,它表示程序運行正常不可以發生的。
17、UDP和TCP連接有和異同?
?、賂CP是傳輸控制協議,提供的是面向連接的,是可靠的,字節流服務,TCP提供超時重撥,檢驗數據功能。
?、赨DP是用戶數據報協議,是一個簡單的面向數據報的傳輸協議,是不可靠的連接。
18、new關鍵字的用法
?、賜ew 運算符 用于創建對象和調用構造函數。
②new 修飾符 用于向基類成員隱藏繼承成員。
③new 約束 用于在泛型聲明中約束可能用作類型參數的參數的類型。
19、Using關鍵字的用法
?、僖妹臻g;
?、跒槊臻g或類型創建別名;(using + 別名 = 包括詳細命名空間信息的具體的類型)
③釋放資源(關閉文件流);
20、可訪問性級別有哪幾種
?、賞ubic 訪問不受限制。
?、趐rotected 訪問僅限于包含類或從包含類派生的類型。
?、踚nternal 訪問僅限于當前程序集。
?、躳rotected internal 訪問僅限于從包含類派生的當前程序集或類型。
?、輕rivate 訪問僅限于包含類型。
21、 一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數是多少, 用遞歸算法實現。
以上是“C#中NET的基礎知識點”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。