C#類型之實值型別與參考型別(from MSDN,加補充)

來源:互聯網
上載者:User
實值型別(C# 參考)

實值型別主要由兩類組成:

  • 結構

  • 枚舉

結構分為以下幾類:

  • Numeric(數值)類型

    • 整型

    • 浮點型

    • decimal

  • bool

  • 使用者定義的結構。

實值型別的主要功能

基於實值型別的變數直接包含值。將一個實值型別變數賦給另一個實值型別變數時,將複製包含的值。這與參考型別變數的賦值不同,參考型別變數的賦值只複製對對象的引用,而不複製對象本身。

所有的實值型別均隱式派生自 System.ValueType。

與參考型別不同,從實值型別不可能派生出新的類型。但與參考型別相同的是,結構也可以實現介面。

與參考型別不同,實值型別不可能包含 null 值。然而,可空類型功能允許將 null 賦給實值型別。

每種實值型別均有一個隱式的預設建構函式來初始化該類型的預設值。有關實值型別預設值的資訊,請參見預設值表。

簡單類型的主要功能

所有的簡單類型(C# 語言的組成部分)均為 .NET Framework 系統類別型的別名。例如,int 是 System.Int32 的別名。有關完整的別名列表,請參見內建類型表(C# 參考)。

編譯時間計算運算元均為簡單類型常數的常數運算式。

可使用文字初始化簡單類型。例如,“A”是 char 類型的文字,而 2001 是 int 類型的文字。

初始化實值型別

C# 中的局部變數經初始化後方可使用。因此,如果像下面這樣聲明了一個局部變數而未將其初始化:

int myInt;

那麼在將其初始化之前,無法使用此變數。可使用下列語句將其初始化:

myInt = new int();  // Invoke default constructor for int type.

此語句等效於:

myInt = 0;         // Assign an initial value, 0 in this example.

當然,可以像下面這樣用同一個語句進行聲明和初始化:

int myInt = new int();

- 或 -

int myInt = 0;

使用 new 運算子時,將調用特定類型的預設建構函式並對變數賦以預設值。在上例中,預設建構函式將值 0 賦給了 myInt。有關通過調用預設建構函式所賦的值的更多資訊,請參見預設值表。

對於使用者定義的類型,使用 new 來調用預設建構函式。例如,下列語句調用了 Point 結構的預設建構函式:

Point p = new Point(); // Invoke default constructor for the struct.

此調用後,該結構被認為已被明確賦值;也就是說該結構的所有成員均已初始化為各自的預設值。

有關 new 運算子的更多資訊,請參見 new。

有關格式化數字類型輸出的資訊,請參見格式化數值結果表。

補充內容:
1.
實值型別一般放在棧上,

1)
如果實值型別是方法內的局部變數,他會在棧上分配記憶體;

2) 如果是執行個體對象成員變數時,它會在堆上分配記憶體(因為執行個體對象,對象本身就是參考型別來(指標放在棧),儲存在堆裡的,所以他當中的實值型別資料也是放在堆裡的)

2.參考型別的指標放在棧上,實際值放在堆上

如參考

實值型別 參考型別
變數中存放 真正的資料 指向資料的引用指標
記憶體空間分配 堆棧(Stack) 託管堆(Managed Heap)
記憶體需求 一般來說較少 較大
執行效能 較快 較慢
記憶體釋放時間點 執行超過定義變數的範圍 由資源回收筒負責回收
可以為null 不可 可以
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.