
- C# 基礎教程
- C# - 首頁
- C# - 概述
- C# - 環境
- C# - 程式結構
- C# - 基本語法
- C# - 資料型別
- C# - 型別轉換
- C# - 變數
- C# - 常量
- C# - 運算子
- C# - 決策
- C# - 迴圈
- C# - 封裝
- C# - 方法
- C# - 可空型別
- C# - 陣列
- C# - 字串
- C# - 結構體
- C# - 列舉
- C# - 類
- C# - 繼承
- C# - 多型
- C# - 運算子過載
- C# - 介面
- C# - 名稱空間
- C# - 預處理器指令
- C# - 正則表示式
- C# - 異常處理
- C# - 檔案 I/O
C# - 資料型別
C# 中的變數分為以下幾種型別:
- 值型別
- 引用型別
- 指標型別
值型別
值型別變數可以直接賦值。它們派生自類 System.ValueType。
值型別直接包含資料。一些示例包括int、char 和 float,它們分別儲存數字、字母和浮點數。當您宣告一個int型別時,系統會分配記憶體來儲存該值。
下表列出了 C# 2010 中可用的值型別:
型別 | 表示 | 範圍 | 預設值 |
---|---|---|---|
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型別大小的示例:
using System; namespace DataTypeApplication { class Program { static void Main(string[] args) { Console.WriteLine("Size of int: {0}", sizeof(int)); Console.ReadLine(); } } }
當以上程式碼編譯並執行時,會產生以下結果:
Size of int: 4
引用型別
引用型別不包含儲存在變數中的實際資料,而是包含對變數的引用。
換句話說,它們引用一個記憶體位置。使用多個變數,引用型別可以引用一個記憶體位置。如果一個變數更改了記憶體位置中的資料,則其他變數會自動反映此值變化。內建引用型別的示例包括:object、dynamic 和 string。
物件型別
物件型別是 C# 公共型別系統 (CTS) 中所有資料型別的最終基類。Object 是 System.Object 類的別名。物件型別可以分配任何其他型別的值,包括值型別、引用型別、預定義型別或使用者定義型別。但是,在分配值之前,需要進行型別轉換。
當值型別轉換為物件型別時,稱為裝箱,反之,當物件型別轉換為值型別時,稱為拆箱。
object obj; obj = 100; // this is boxing
動態型別
您可以將任何型別的值儲存在動態資料型別變數中。這些型別變數的型別檢查在執行時進行。
宣告動態型別的語法如下:
dynamic <variable_name> = value;
例如,
dynamic d = 20;
動態型別類似於物件型別,區別在於物件型別變數的型別檢查在編譯時進行,而動態型別變數的型別檢查在執行時進行。
字串型別
字串型別允許您將任何字串值分配給變數。字串型別是 System.String 類的別名。它派生自物件型別。字串型別的值可以使用兩種形式的字串文字進行分配:帶引號和@帶引號。
例如,
String str = "Tutorials Point";
@帶引號的字串文字如下所示:
@"Tutorials Point";
使用者定義的引用型別包括:類、介面或委託。我們將在後面的章節中討論這些型別。
指標型別
指標型別變數儲存另一個型別的記憶體地址。C# 中的指標與 C 或 C++ 中的指標具有相同的功能。
宣告指標型別的語法如下:
type* identifier;
例如,
char* cptr; int* iptr;
我們將在“不安全程式碼”一章中討論指標型別。