物件與型別

2021-05-09 17:12:34 字數 1044 閱讀 1724

結構(struct)在記憶體中的儲存地點是:棧(stack);

類(class)在記憶體中的儲存地點是:堆(heap);

示例:struct retangle

public double width;

public double height;

public retangle(double width,double height)

因為是值型別,所以用new運算子的時候編譯器是不會在堆上分配空間的.我們要做的,僅僅是宣告就可以了:

retangle ret;

ret.width=3;

ret.height=4;

結構與類的區別:

1,值型別與引用型別的區別,值型別儲存在stack中(注:如果他們是乙個物件的一部份,就會儲存在heap中),或儲存為內聯(inline).

2,結構不支援繼承. object –> valuetype –> struct

3,編譯器總是為結構提供乙個無引數的預設建構函式,而且這個建構函式是不允許替換的.(因為.net執行庫不能呼叫使用者定製的無參建構函式).結構的預設建構函式會把所有的字段都初始化為0。不能提供欄位的初始值,否則會有編譯錯誤。

4,使用結構,可以指定字段如何在記憶體中布局.

ref與out的異同:

在.net中通過值傳遞引數是預設的。這兩個關鍵字都是迫使值引數通過引用來傳遞給方法的方法。

ref這種方式,在傳遞前,變數需要初始化。

out這種方式,認為初始化沒有必要。

函式過載:

僅僅在返回值的型別上不同,不算過載;

引數是僅僅是ref 與 out的不同,不算過載.

靜態建構函式:

編寫這種建構函式的原因是:類有一些靜態欄位或屬性,需要在第一次使用前,從外部源中初始化。

注意:靜態建構函式沒有訪問修飾符,其它的c#**從來不呼叫它,但在載入類是,總是由。net執行庫來呼叫,所以訪問修飾符對於他來說是沒有意義的。當然也不能帶任何引數,當然也只能有乙個,也不能訪問任何例項成員。

python型別與物件

1 列舉4個python核心資料型別的名稱。數字 字串 列表 字典 元祖 檔案和集合一般被認為是核心物件 資料 型別。型別 none和布林型有時也被定義在這樣的分類中。還有多種數字型別 整數 浮點數 複數 分數和十進位制數 和多種字串型別。2 為什麼我們把它們稱作 核心 資料型別?它們被認作是 核心...

匿名型別與匿名物件

var匿名型別 推斷型別 var可代替任何型別,編譯器會根據上下文來判斷你到底是想用什麼型別,類似 object,但是效率比object高點。我們可以賦予區域性變數推斷 型別 var而不是顯式型別。var 關鍵字指示編譯器根據初始化語句右側的表示式推斷變數的型別。推斷型別可以是內建型別 匿名型別 使...

物件及其轉化與型別

陣列物件 1.屬性 兩種方式 var arr var arr new array 可以用length 與constrcution 來判斷 2.方法 陣列物件 方法作用 返回值對原陣列是否有影響 備註arr.push 在陣列後面新增 返回值為新陣列的長度 會對原陣列有影響 引數可以傳多個 arr.un...