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