C# 中的數據類型整理

在 C# 中,變量分爲如下幾種類型:
值類型(Value types)
引用類型(Reference types)
指針類型(Pointer types)
值類型(Value types)
值類型變量能夠直接分配給一個值。它們是從類 System.ValueType 中派生的。javascript

值類型直接包含數據。好比 int、char、float,它們分別存儲數字、字符、浮點數。當您聲明一個 int 類型時,系統分配內存來存儲值。java

下表列出了 C# 2010 中可用的值類型:ide

類型 描述 範圍 默認值
bool 布爾值 True 或 False False
byte 8 位無符號整數 0 到 255 0
char 16 位 Unicode 字符 U +0000 到 U +ffff '\0'
decimal 128 位精確的十進制值,28-29 有效位數 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位雙精度浮點型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D
float 32 位單精度浮點型 -3.4 x 1038 到 + 3.4 x 1038 0.0F
int 32 位有符號整數類型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符號整數類型 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符號整數類型 -128 到 127 0
short 16 位有符號整數類型 -32,768 到 32,767 0
uint 32 位無符號整數類型 0 到 4,294,967,295 0
ulong 64 位無符號整數類型 0 到 18,446,744,073,709,551,615 0
ushort 16 位無符號整數類型 0 到 65,535 0
如需獲得一個類型或一個變量在特定平臺上的準確尺寸,可使用 sizeof 方法。表達式 sizeof(type) 產生以字節爲單位存儲對象或類型的存儲尺寸。下面舉例獲取任何機器上 int 類型的存儲尺寸:ui

using System;spa

namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
當上面的代碼被編譯和執行時,它會產生下列結果:指針

Size of int: 4
引用類型(Reference types)
引用類型不包含存儲在變量中的實際數據,但它們包含對變量的引用。code

換句話說,它們指的是一個內存位置。使用多個變量時,引用類型能夠指向一個內存位置。若是內存位置的數據是由一個變量改變的,其餘變量會自動反映這種值的變化。內置的 引用類型有:object、dynamic 和 string。對象

對象(Object)類型
對象(Object)類型 是 C# 通用類型系統(Common Type System - CTS)中全部數據類型的終極基類。Object 是 System.Object 類的別名。因此對象(Object)類型能夠被分配任何其餘類型(值類型、引用類型、預約義類型或用戶自定義類型)的值。可是,在分配值以前,須要先進行類型轉換。ip

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

object obj;
obj = 100; // 這是裝箱
動態(Dynamic)類型
您能夠存儲任何類型的值在動態數據類型變量中。這些變量的類型檢查是在運行時發生的。

聲明動態類型的語法:

dynamic <variable_name> = value;
例如:

dynamic d = 20;
動態類型與對象類型類似,可是對象類型變量的類型檢查是在編譯時發生的,而動態類型變量的類型檢查是在運行時發生的。

字符串(String)類型
字符串(String)類型 容許您給變量分配任何字符串值。字符串(String)類型是 System.String 類的別名。它是從對象(Object)類型派生的。字符串(String)類型的值能夠經過兩種形式進行分配:引號和 @引號。

例如:

String str = "runoob.com";
一個 @引號字符串:

@"runoob.com";
C# string 字符串的前面能夠加 @(稱做"逐字字符串")將轉義字符(\)看成普通字符對待,好比:

string str = @"C:\Windows";
等價於:

string str = "C:\Windows";
@ 字符串中能夠任意換行,換行符及縮進空格都計算在字符串長度以內。

string str = @"<script type=""text/javascript"">
<!--
-->
</script>";
用戶自定義引用類型有:class、interface 或 delegate。咱們將在之後的章節中討論這些類型。

指針類型(Pointer types)
指針類型變量存儲另外一種類型的內存地址。C# 中的指針與 C 或 C++ 中的指針有相同的功能。

聲明指針類型的語法:

type* identifier;
例如:

char cptr;int iptr;

相關文章
相關標籤/搜索