C 基礎(二)物件和型別

2021-05-22 09:09:22 字數 867 閱讀 2538

類和結構

類和結構的區別是在記憶體中的儲存方式(類是儲存在heap上的引用型別,而結構是儲存在stack上的值型別)、訪問方式,結構不支援繼承。類和結構都有new來宣告例項。

類資料成員包含字段、常量和事件。函式成員包括方法、屬性、建構函式、finalizer、運算子及索引器。在c++中,可以宣告與類無關的全域性方法,但在c#中每個函式必須與類或結構相關。c#宣告方法與c/c++類似,不同之處是c#方法必須加private、public限定符,也不能像delphi那樣用public 把幾個方法限定起來,呼叫方法與c++一樣,

引數可以通過引用或值來傳遞,對於值傳遞,如果想改變傳遞的值,可以將引數宣告為ref引數,ref類似於c/c++裡的&,或是delphi傳遞引數的var,此外,c#強制要求對傳遞的引數在呼叫之前進行初始化,無論是值傳遞還是引用傳遞,但out引數除外。out引數與delphi裡類似,外部宣告乙個變數,通過呼叫方法,改變引數的值。

值得注意的是,靜態建構函式是在載入類是.net呼叫,c#**從不呼叫,且靜態建構函式沒有訪問修飾符,無引數的例項化建構函式與靜態
建構函式可以安全的共存,因為例項建構函式是在建立類例項時執行的。

在c#語法中,結構的建構函式有些特殊,一方面不允許定義無引數的建構函式,另一方面預設的建構函式將所有的字段均初始化為0。

如果沒有源**,c#提供了擴充套件方法來改變原有的類,第乙個引數是要擴充套件的型別,放在this關鍵字後面,是為了通知編譯器,這個方法是

money的一部分。

呼叫時第乙個引數並不顯示,也不能對它進行任何處理,同時,即使擴充套件方法是靜態的,也要使用使用例項來呼叫,cash1.addtoamount(10m)。

2 物件和型別

一 結構與類主要區別是結構用關鍵字struct代替class來宣告結構。類和結構都是使用關鍵字new來宣告例項。這個關鍵字創造物件並對其進行初始化。二 類成員的可訪問性可是以 public protected internal protected private internal.1 方法的宣告 m...

8 1 物件基礎

知識梳理 1 js中沒有類的概念 只有物件 和php不同 2 建構函式 不需要 return 就可以返回值 學習目標 1 能夠說出為什麼需要物件 2 能夠使用字面量建立物件 3 能夠使用建構函式建立物件 4 能夠說出new的執行過程 5 能夠遍歷物件屬性 一 概念1 什麼是物件 1 物件一定是乙個具...

C 基礎學習(5) 物件陣列和物件指標

4.this指標 1.物件陣列的定義和使用說明 在建立物件陣列的時候需要呼叫建構函式,有多少個物件就要呼叫多少次建構函式 如果物件陣列所屬類有帶引數的建構函式,可用初始化列表按順序呼叫建構函式,使用複製初始化來初始化來初始化每個陣列元素 如果物件陣列所屬類有單個引數時,定義陣列時可以直接在初始化列表...