C# 資料型別
在C# 中,變數分為以下幾種型別:
值型別(Value types)
引用型(Reference types)
指標類型(Pointer types)
值型別(Value types)
#值型別變數可以直接分配給一個值。它們是從類別 System.ValueType 中派生的。
值類型直接包含資料。例如 int、char、float,它們分別儲存數字、字母、浮點數。當您聲明一個 int 類型時,系統分配記憶體來儲存值。
下表列出了C# 2010 中可用的值類型:
類型 | ##描述## 範圍 | 預設值 | |
---|---|---|---|
布林值 | True 或False | False | |
8 位元無符號整數 | 0 到255 | 0 | |
16 位元Unicode 字元 | U +0000 到U +ffff | '\0' | |
#128位元精確的十進制值,28-29 有效位數 | (-7.9 x 10 | 28到7.9 x 1028) / 100 到280.0M | |
64 位元雙精確度浮點型 | #(+/-)5.0 x 10 | -324到(+/-)1.7 x 103080.0D | |
32 位元單精確度浮點型 | -3.4 x 10 | 38到+ 3.4 x 1038 #0.0F | |
#32 位元有符號整數型別 | -2,147,483,648 到2,147,483,647 | 0 | |
64 位元有符號整數型別 | -923,372,036,854,775,808 到 9,223,372,036,854,775,807 | #0L | |
8 位元有符號整數型別 | -128 到127 | 0 | |
16 位元有符號整數型別 | -32,768 到32,767 | 0 | |
32 位元無符號整數型別 | 0 到4,294,967,295 | 0 | |
#64 位元無符號整數型別 | 0 到18,446,744,073,709,551,615 | 0 | |
16 位元無符號整數類型 | ushort | 16 位元無符號整數型別 |
如需取得一個類型或一個變數在特定平台上的準確尺寸,可以使用 sizeof 法。表達式 sizeof(type) 產生以位元組為單位儲存物件或類型的儲存尺寸。以下舉例取得任何機器上 int 類型的儲存尺寸:
namespace DataTypeApplication
{
class Program
{
# {
Console.WriteLine("Size of int: {0}", sizeof(int));# )# }
}
#當上面的程式碼被編譯和執行時,它會產生下列結果:
##Size of int: 4{
class Program
{
# {
Console.WriteLine("Size of int: {0}", sizeof(int));# )# }
}
#當上面的程式碼被編譯和執行時,它會產生下列結果:
引用類型不包含儲存在變數中的實際數據,但它們包含對變數的引用。
object obj;
obj = 100; // 這是裝箱動態(Dynamic)類型
您可以儲存任何類型的值在動態資料類型變數中。這些變數的類型檢查是在運行時發生的。
宣告動態型別的語法:您可以儲存任何類型的值在動態資料類型變數中。這些變數的類型檢查是在運行時發生的。
dynamic <variable_name> = value;
##例如:
dynamic d = 20;
動態類型與物件類型相似,但是物件類型變數的類型檢查是在編譯時發生的,而動態類型變數的類型檢查是在執行時發生的。
字串(String)類型
字串(String)類型 允許您給變數分配任何字串值。字串(String)類型是 System.String 類別的別名。它是從物件(Object)類型派生的。字串(String)類型的值可以透過兩種形式進行分配:引號和 @引號。
例如:
String str = "w3cschool.cc";
一個@引號字串:
# @"w3cschool.cc";
C# string 字串的前面可以加上@(稱為"逐字字串")將轉義字元(\)當作普通字元對待,例如:
string str = @"C:\Windows";
等價於:
string str = "C:\\ Windows";
@ 字串中可以任意換行,換行符號及縮排空格都計算在字串長度之內。
string str = @"<script type=""text/javascript"">
<!--
# -->## <!--
# -->## ;";
<!--
# -->## <!--
# -->## ;";
使用者自訂參考類型有:class、interface 或delegate。我們將在以後的章節中討論這些類型。
指標類型(Pointer types)
指標類型變數儲存另一種類型的記憶體位址。 C# 中的指標與 C 或 C++ 中的指標具有相同的功能。
宣告指標類型的語法:
type* identifier;
char* cptr;
我們將在章節"不安全的程式碼"中討論指標類型。 int* iptr;