C#數據類型

在C#中,變量分爲一下幾種類型ui

1 值類型spa

2 引用類型code

一 值類型對象

值類型是從類System.ValueType中派生。值類型的變量直接包含數據,每一個變量都有本身的數據副本,所以對一個變量執行的運算不會影響另外一個變量(ref和out參數變量除外)。blog

值類型細分爲一下類型ci

1 簡單類型字符串

  有符號整型:sbyte、short、int、longstring

  無符號整型:byte、ushort、uint、ulongit

  Unicode字符:char編譯

  IEEE二進制浮點:float、double

  高精度十進制浮點數:decimal

  布爾:bool

2 枚舉類型:enum

3 結構類型:struct

如需獲得一個類型或一個變量在特定平臺上的準確尺寸,能夠使用sizeof方法,表達式sizeof(type)產生以字節爲單位存儲對象或類型的存儲尺寸。

Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();

輸出結果

Size of int: 4

二 引用類型

引用類型的變量存儲對數據的引用。

多個引用類型變量能夠引用同一數據對象。所以,對一個變量執行運算會影響其它變量。

引用類型細分爲一下類型

1 object類型

object是全部類型的基類。

類型檢查在編譯時發生。

當一個值類型轉換爲對象類型時,則被稱爲裝箱;另外一方面,當一個對象類型轉換爲值類型時,則被稱爲拆箱

object obj;
obj = 100; // 裝箱
int i;
i = (int)obj; // 拆箱

2 dynamic類型

能夠存儲任何類型的值在dynamic類型變量中。不能直接對其實例化。

類型檢查在運行時發生。

例如:

dynamic d = 100;

3 String類型

string類型是從object類型派生的,能夠用引號或@引號賦值。

string字符串的前面加@(「逐字字符串」)將轉義字符

例如:

string str = "C:\\Windows";

等價於

string str = @"C:\Windows";

4 用戶自定義類型

有class、interface、delegate等。

四 值類型和引用類型的區別

1 值類型在棧中存儲數據;引用類型在棧中存儲數據的地址,數據存儲在堆中。

2 賦值時,值類型複製的的是數據;引用類型複製的的是數據的地址。

3 值類型不能夠爲null;引用類型能夠爲null。

例如:

int i = 1;
int i2 = i;  // 複製數據
i2 = 2;
Console.WriteLine(i);
Console.WriteLine(i2);
object obj = 10;
object obj2 = obj; // 複製地址
obj2 = 20;
Console.WriteLine(obj);
Console.WriteLine(obj2);
Console.ReadLine();

輸出結果:

1
2
20
20
相關文章
相關標籤/搜索