數據類型指定變數可以存儲的數據的類型,如:整數,浮點,字元等。
C# 語言中有3
種類型的數據類型。如下表中所示 -
類型 | 數據類型 |
---|---|
值數據類型 | int , char , float , Boolean 等 |
引用數據類型 | 字串,類,對象和介面 |
指針數據類型 | 指針 |
值數據類型
值數據類型是基於整數和基於浮點數。 C# 語言支持有符號和無符號文字值。
C# 語言中有兩種類型的值數據類型。
- 預定義的數據類型 - 如整型,布爾型,浮點型等
- 用戶定義的數據類型 - 如結構,枚舉等
數據類型的記憶體大小可能會根據32
位或64
位操作系統而不同。我們來看看值數據類型。它的大小根據32
位操作系統給出。
數據類型 | 記憶體大小 | 範圍 |
---|---|---|
char | 1 byte | -128 to 127 |
signed char | 1 byte | -128 to 127 |
unsigned char | 1 byte | 0 to 127 |
short | 2 byte | -32,768 to 32,767 |
signed short | 2 byte | -32,768 to 32,767 |
unsigned short | 2 byte | 0 to 32,767 |
int | 2 byte | -32,768 to 32,767 |
signed int | 2 byte | -32,768 to 32,767 |
unsigned int | 2 byte | 0 to 32,767 |
short int | 2 byte | -32,768 to 32,767 |
signed short int | 2 byte | -32,768 to 32,767 |
unsigned short int | 2 byte | 0 to 32,767 |
long int | 4 byte | |
signed long int | 4 byte | |
unsigned long int | 4 byte | |
float | 4 byte | |
double | 8 byte | |
long double | 10 byte | - |
要在特定平臺上獲取類型或變數的確切大小,可以使用sizeof
方法。 運算式sizeof(type)
產生對象或類型的存儲大小(以位元組為單位)。以下是在任何機器上獲取double
類型的大小的示例:
using System;
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of double: {0}", sizeof(double));
Console.ReadLine();
}
}
}
當編譯和執行上述代碼時,會產生以下結果:
Size of double: 8
引用數據類型
引用數據類型不包含存儲在變數中的實際數據,但它們包含對變數的引用。如果一個變數的數據值被更改,則這個變數將自動反映該值的變化。
C# 語言中有兩種類型的引用數據類型。
- 預定義類型 - 如對象,字串。
- 用戶定義的類型 - 如類,介面。
內置引用類型的示例有:object
,dynamic
和string
。
對象類型
對象類型是 C# 通用類型系統(CTS)中所有數據類型的最終基類。
當一個值類型轉換為對象類型時,它被稱為裝箱,另一方面,當對象類型轉換為值類型時,稱為拆箱。
object obj;
obj = 100; // this is boxing
動態類型
可以在動態數據類型變數中存儲任何類型的值。這些類型的變數的類型檢查在運行時進行。
聲明動態類型的語法是:
dynamic <variable_name> = value;
例如,
dynamic d = 20;
字串類型
字串類型允許為變數分配任何字串值。String
類型是System.String
類的別名。 它是從Object
類型派生的。可以使用兩種形式的字串文字來分配字串類型的值:quoted
和@quoted
。
示例
String str = "zaixian Point";
@quoted
字串文字如下所示:
String str = "zaixian Point";
指針數據類型
C# 語言中的指針是變數,也稱為定位符或指示符,指向值的地址。
指針中使用的符號
符號 | 名稱 | 說明 |
---|---|---|
& |
地址運算符 | 獲取變數的地址 |
* |
間接運算符 | 訪問地址的值 |
聲明一個指針
C# 語言中的指針可以使用*
(星號符號)聲明。
int * a; //pointer to int
char * c; //pointer to char