1.關鍵字abstract
abstract關鍵字是用於建立抽象類或抽象成員方法的修飾符,當用於修飾成員方法的時候,成員方法是沒有方法體的,只有其方法的宣告部分。格式如下:
abstract
class
test
}2.方法簽名
方法簽名是指:方法的名稱,引數的數量和引數的型別這三部分,不包含返回型別。可以通過不同的方法簽名來過載乙個方法。
3.過載方法的規則
a.每個過載的方法必須有一下乙個或多個不同(引數數量、引數型別、引數順序)
b.每個過載的方法應該使用相同的名稱,否則視為新方法
c.不能過載帶有相同屬性名稱的方法,反之亦然
4.引數
引數分為按值傳遞和按引用傳遞,預設是按值傳遞,如果要使用按引用傳遞需使用關鍵字ref或out,而引數的型別又分為值型別和引用型別,所以可以組合出4種引數傳遞方式:
a.按值方式傳遞值型別引數
b.按值方式傳遞引用型別引數
c.按引用方式傳遞值型別引數
d.按引用方式傳遞引用型別引數
5.預設訪問修飾
類:如果不是巢狀的類,命名空間或編譯單元內的類只有public和internal兩種修飾,預設的是internal。
成員方法:有5種修飾符,預設為private,建構函式是特殊的成員方法。
6.建構函式
a.和類同名 b.沒有返回型別 c.可以過載 d.一般用於物件的初始化
7.程式語句
c#是物件導向的語言,所有的程式語句都封裝在類的方法裡,而不能像面向過程的語言那樣,可以單獨存在於其他地方。下面的例子中被注釋掉的語句都是錯誤的寫法。
//int array3;
//array3 = new int[2];
public
class
infunction
}8.使用靜態建構函式的要點
a.靜態建構函式既沒有訪問修飾符,也沒有引數。因為是.net呼叫的,所以像public和private等修飾符就沒有意義了。
b.是在建立第乙個類例項或任何靜態成員被引用之前,.net將自動呼叫靜態建構函式來初始化類,也就是說我們無法直接呼叫靜態建構函式,也就無法控制什麼時候執行靜態建構函式了,而且最多隻執行一次。
c.乙個類只能有乙個靜態建構函式。
d.無引數的建構函式可以與靜態建構函式共存。儘管引數列表相同,但乙個屬於類,乙個屬於例項,所以不會衝突。
e.靜態建構函式不可以被繼承。
f.如果沒有寫靜態建構函式,而類中包含帶有初始值設定的靜態成員,那麼編譯器會自動生成預設的靜態建構函式。
9.乙個類由及部分構成
乙個類主要由兩部分構成,資料成員和函式成員
資料成員包括:字段,常量,事件.
函式成員包括:方法,屬性,建構函式,析構函式,運算子,索引器.
10.屬性的訪問修飾符
在c#2.0中允許為get和set設定不同的訪問級別,但必須遵循相關規則.
a.get和set訪問器中必須有乙個和屬性訪問級別相同(不用顯示宣告,否則會顯示編譯錯誤),而另乙個的訪問級別必須小於屬性的訪問級別.
b.當給屬性的get和set訪問器定義不同的訪問級別的時候,在索引器中也應該定義統一的訪問級別.
c.不能在介面中分別設定不同的訪問修飾符.
11.淺拷貝和深拷貝
淺拷貝和深拷貝的區別就好比方法引數的傳值引數和傳引用引數的區別.
深拷貝:是指源物件與拷貝物件互相獨立,其中任何乙個物件的改動都不會對另外乙個物件造成影響.
淺拷貝:是指源物件與拷貝物件共用乙份實體,僅僅是引用的變數不同(名稱不同),對其中任何乙個物件的改動都會影響另外乙個物件.
12.巢狀類的例項化方式
如果類b是類a的巢狀類,那麼請用下面的方式進行例項化
a.b b = new a.b();
這是a就相當於b的命名空間.
13.繼承的規則
a.繼承是可以傳遞的.如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,也繼承了a中的成員.object類作為所有類的基類.
b.派生類應當是對基類的擴充套件.派生類可以新增新的成員,但不能除去已經繼承的成員的定義.
c.建構函式和析構函式不能被繼承.除此以外的其他的成員,不論對他們定義了怎樣的訪問方式,都能被繼承.基類的訪問方式只能決定派生類能否訪問他們.
d.派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員.但這並不因為這派生類刪除了這些成員,只是不能在訪問了.
e.類可以定義虛方法,虛屬性以及虛索引器,他的派生類能夠過載這些成員,從而實現編譯時的多型性.
14.值型別和引用型別在記憶體中的分布規律
a.引用型別總是分布在託管堆上.
b.值型別分配在它宣告的地方.作為欄位時,跟隨其所屬的變數(例項)儲存;作為區域性變數時,儲存在棧上.
c 常規知識點
姊妹篇 c 較 個人 偏僻知識點 符號含義 a a 浮點數 十六進製制數字和p p 記數法 c99 c字元 d i 有符號十進位制整數 f浮點數 包括float和double e e 浮點數指數輸出 e e 記數法 g g 浮點數不顯無意義的零 0 u無符號十進位制整數 o八進位制整數 e.g.01...
C 知識點筆記
在全域性域中宣告的變數會自動初始化為0 如果變數是在區域性域中定義的,則系統不會向它提供回初始值0,這些物件被認為是未初始化,其值隨機 有的編譯器可能答會為你初始化為0,但千萬別依賴於這種可能行為,因為它會給你的程式帶來未定義的行為 區域性變數 在乙個函式內部定義的變數就是區域性變數。作用範圍 只侷...
C語言知識點彙總(學習筆記)
c語言沒有專門用於儲存字串的變數型別,字串都被儲存在char型別的陣列中。陣列由連續的儲存單元組成,字串中的 字元被儲存在相鄰的儲存單元中,每個單元儲存乙個字元,陣列末尾位置以字元 0結束。char name 40 name中有40個儲存單元的字串,只能儲存39個字元,剩下乙個位元組留給空字元。兩條...