C#圖解教程學習筆記——數據類型與數據存儲

1、數據類型
1. 預約義類型
C#提供16種預約義類型,包括13種簡單類型和3種非簡單類型:
(1)簡單類型
<1>11種數值類型:
  不一樣長度的有符號和無符號整數類型
  浮點數的float和double
  高精度小數類型decimal(經常使用於貨幣計算)
<2>一種Unicode字符類型 char
<3>一種bool類型,布爾值只能爲true或false
(2)非簡單類型
<1>string Unicode字符數組
<2>object 全部其餘類型的基類
<3>dynamic 使用動態語言編寫程序集時使用
圖解:數組

注:
  全部的預約義類型都直接映射到底層的.NET類型。C#類型名稱就是.NET類型的別名, 因此可使用.NET類型名稱替代C#類型名,但不鼓勵這樣作。
2. 用戶自定義類型
用戶能夠自定義6種類型:
<1>class 類類型
<2>struct 結構類型
<3>array 數組類型
<4>enum 枚舉類型
<5>delegate 委託類型
<6>interface 接口類型spa

 

2、數據存儲
1. 存儲數據的兩個內存區域——棧和堆
(1)棧
棧是一個LIFO(Last-In First-Out,後進先出)的內存數組,存儲如下幾種類型數據:
<1>某些類型變量的值。
<2>程序當前的執行環境。
<3>傳遞給方法的參數。
在棧中存儲數據時,數據只能從棧的頂端插入或刪除。
圖解:code

(2)堆
與棧不一樣,堆裏的內存能以任意順序存入或移除。
在堆裏能夠分配大塊內存來存儲某類型的數據對象。
CLR的GC(Garbage Collector,垃圾收集器)自動刪除堆上再也不訪問的數據。
圖解:對象

2. 數據存儲
數據的存儲方式根據其類型的不一樣而不一樣。數據類型可分爲兩類——值類型和引用類型。值類型只須要一段單獨的內存,可直接存放在棧裏;而引用類型須要兩段內存,第一段存儲實際數據,它老是位於堆中,第二段是一個引用,指向數據在堆中的存放位置。
圖解:blog

若是數據是另外一個對象的成員,那麼它的存儲會有些不一樣:
(1)引用類型對象的數據部分始終存放在堆裏。
(2)值類型對象,或引用類型數據的引用部分能夠存在堆裏,也能夠存在棧裏,這取決於實際狀況。
C#類型的分類:接口

注:
  每一個變量都有變量類型,這樣編譯器就能夠肯定運行時須要的內存總量以及哪些部分應該存在棧上,哪些存在堆上。 內存

相關文章
相關標籤/搜索