C 高階程式設計 基礎知識摘要一

2022-04-01 23:04:58 字數 2356 閱讀 8808

核心c#:

值型別儲存在堆疊中,而引用型別儲存在託管堆上。

object型別可以用於兩個目的:

可以使用object引用繫結任何子型別的物件

object型別執行許多一般用途的基本方法,包括equals(), gethashcode(), gettype()和tostring().

在c#中,switch語句的case子句的排放順序是無關緊要的,甚至可以把default子句放在最前面,因此,任何兩條case都不能相同,這包括值相同的不同常量。

foreach迴圈不能改變集合中各項的值. 

goto語句的限制:不能跳轉到像for迴圈這樣的**塊中,也不能跳出類的範圍,不能退出try…catch塊後面的finally塊。

break用於退出判斷(switch語句)或者迴圈(for, foreach, while等)語句,該語句會使控制流執行迴圈後面的語句。

continue語句也必須在迴圈中使用,但它只退出迴圈的當前迭代,開始執行迴圈的下一次迭代,而不是退出迴圈。

物件和型別

結構和類的區別是它們在記憶體中的儲存方式、訪問方式(類是儲存在堆上的引用型別,而結構是儲存在棧上的值型別)和它們的一些特徵(如結構不支援繼承)。

引數可以是可選的,必須為可選引數提供預設值,且可選引數必須是方法定義的最後乙個引數。

無引數的例項建構函式與靜態建構函式可以在同乙個類中同時定義,儘管引數列表相同,但這並不矛盾,因為在載入類時執行靜態建構函式,而在建立例項時執行例項建構函式,所以何時執行哪個建構函式不會有衝突。

readonly關鍵字比const靈活得多,允許把乙個字段設定為常量,但還需要執行一些計算,以確定它的初始值。其規則是可以在建構函式中給唯讀字段賦值,但不能在其他地方賦值。唯讀欄位還可以是乙個例項字段,而不是靜態字段,類的每個例項可以有不同的值。

在建構函式中不必給唯讀字段賦值,如果沒有賦值,它的值就是其特定資料型別的預設值,或者在宣告時給它初始化的值。這適用於唯讀的靜態欄位和例項字段。

擴充套件方法允許改變乙個類,但不需要該類的源**。它是靜態方法,是類的一部分,但實際上沒有放在類的源**中。對於擴充套件方法,第乙個引數是要擴充套件的型別,放在this關鍵字後面。可以訪問擴充套件型別的所有公有方法和屬性。

繼承

實現繼承:表示乙個型別派生於乙個基型別,擁有該基類的所有成員欄位和函式。在實現繼承中,派生型別採用基型別的每個函式的實現**,除非在派生型別的定義中指定重寫某個函式的實現**。在需要給現有的型別新增功能,或許多相關的型別共享一組重要的公共功能時,這種型別的繼承非常有用。

介面繼承:表示乙個型別只繼承了函式的簽名,沒有繼承任何實現**。在需要指定該型別具有某些可用的特性時,最好使用這種型別的繼承。

結構總是派生自system.valuetype, 它們還可以派生自任意多個介面

類總是派生自使用者選擇的另乙個類,它們還可以派生自任意多個介面

把乙個基類函式宣告為virtual,就可以在任何派生類中重寫該函式,也可以把屬性宣告為virtual,對於虛屬性或重寫屬性,語法與非虛屬性相同,但要在定義中新增關鍵字virtual:

1

class

mybaseclass27

}8

view code

在派生類的函式重寫另乙個函式時,要使用override關鍵字顯示宣告:

1

class

myderivedclass: mybaseclass

27 }

view code

成員欄位和靜態函式都不能宣告為virtual

如果簽名相同的方法在基類和派生類中都進行了宣告,但該方法沒有分別宣告為virtual 和override,派生類方法會隱藏基類方法

可以使用base.()語法呼叫基類中的任何方法,不必從同乙個方法的過載中呼叫它

抽象類不能例項化,抽象函式不能直接實現,必須在非抽象的派生類中重寫

如果類包含抽象函式,則該類也是抽象的,也必須宣告為抽象的:

1

abstract

class

building

2

view code

要在方法或屬性上使用sealed關鍵字,必須先從基類上把它宣告為要重寫的方法或屬性。如果基類上不希望有重寫的方法或屬性,就不要把它宣告為virtual

建構函式的呼叫順序是先呼叫system.object,再按照層次結構由上向下進行,直到到達編譯器要例項化的類為止。每個建構函式都初始化它自己的類中的字段。

base和this關鍵字是呼叫另乙個建構函式時允許使用的唯一關鍵字,其他關鍵字都會產生編譯錯誤。

介面僅表示其成員的存在性,類負責確定這些成員是虛擬還是抽象的。

介面引用的強大之處在於,它可以引用任何實現該介面的類。

linux高階程式設計二基礎知識

shell 一 shell命令 1.shell是一種命令直譯器 2.shell的種類 1.bash 2.sh 3.ksh 4.csh 5.3.檢視當前的shell型別 echo shell 4.檢視系統能支援的shell vi etc shells 5.command options arg1 ar...

HTML基礎知識筆記摘要

html 網際網路三大基石 1.html 顯示資料 2.http 傳輸資料 http傳輸協議 3.url 定位資料 協議 ip位址或主機名 埠 網路中的內容.html hyper text makeup language 超文字標記語言 什麼是文字 記錄文字本身 又記錄樣式的文字 叫文字 什麼是純文...

C 入門高階之一 基礎知識介紹

1.c 是1980年由貝爾實驗室的bjarne stroustrup博士創立的語言 2.c 語言最大的兩個特點 全面相容c語言,面對物件的特性 3.支援所有的c語言資料型別,但是c 的編譯器具有更加嚴格的型別檢查 4.結構體的定義方法示例 struct test 5.列舉定義方法 enum test...