如果廣泛地描述C和C++程序的源代碼的特征,可以說C程序是一組函數和數據類型,C++程序是一組函數和類,然而C#程序是一組類型聲明。
既然C#程序就是一組類型聲明,那么學習C#就是學習如何創建和使用類型。所以需要做的第一件事情就是了解什么是類型。
可以把類型想象成一個用來創建數據結構的模板,模板本身並不是什么數據結構,但它詳細說明了由該模板構造的對象的特征。
類型由下面的元素定義:
. 名稱
. 用於保存數據成員的數據結構
. 一些行為及約束條件
實例化類型
從某個類型模板創建實際的對象,稱之為實例化該類型。
數據成員和函數成員
像short、int和long等這樣的類型稱之為簡單類型,這種類型只能存儲一個數據項。
其他類型可以存儲多個數據項,比如數組(array)類型就可以存儲多個同類型的數據項。這些數據項稱為數組元素。
然而另外一些類型可以包含許多不同類型的數據項(類)。這些類型中的數據項個體稱為成員,並且與數組中使用數字類引用成員不同,這些成員有獨特的名稱。
有兩種成員:數據成員和函數成員。
. 數據成員 保存了與這個類的對象或作為一個整體的類相關的數據。
. 函數成員 執行代碼。函數成員定義類型的行為
預定義類型
C#提供了16種預定義類型。
如圖
需要注意的是:
bool類型表示布爾值並且必須為true或false.
decimal是高精度小數類型,與float和double不同,decimal類型可以准確地表示分數,decimal類型常用語貨幣的計算。
非簡單類型
object::所有其他類型的基類,包括簡單類型
string::0個或多個Unicode字符所組成的序列
dynamic::在使用動態語言編寫的程序集時使用。
用戶定義類型
1:類類型(class);
2: 結構類型(struct)
3:數組類型(array)
4:枚舉類型(enum)
5:委托類型(delegate)
6:接口類型(interface)
一旦聲明了類型就可以創建和使用這種類型的對象,就像他們是預定義類型一樣。
例如:
預定義類型: int a;
float b;
用戶自定義類型:
堆和棧
程序運行的時候,他它數據必須存儲在內存中,一個數據項需要多大的內存,存儲在什么地方以及如何存儲都依賴於該數據的類型。
運行中的程序使用兩個內存區域來存儲數據:棧和堆
棧:
棧是一個內存數組,是一個后進先出的數據結構,棧存儲幾種類型的數據:
1:某種類型變量的值
2:程序當前的執行環境
3:傳遞給方法的參數
棧的特征:
.1 數據只能從棧的頂端插入和刪除、
.2 把數據放到棧頂稱為入棧
.3 從棧頂刪除數據稱為出棧
堆
堆是一塊內存區域,在堆里可以分配大塊的內存用於存儲某種類型的數據對象,與棧不同,堆里的內存能夠任意順序存入和刪除。
雖然程序可以在堆里保存數據,但並不能顯示地刪除它們。CLR的自動GC(Carbage collector,垃圾收集器)在判斷出程序的代碼將不會再訪問某種數據項的時候,自動清除無主的堆對象。
如下圖所示
變量
這里不再多介紹了。
如有雷同,請聯系我。