簡(jiǎn)單類(lèi)型屬于C# 語(yǔ)言的值類(lèi)型,對(duì)應(yīng)于C++語(yǔ)言的基本類(lèi)型,包括字符、布爾類(lèi)型、以及整數(shù)和實(shí)數(shù)等數(shù)值類(lèi)型。與C++/CLI相似,C# 中的基本類(lèi)型都與.NET框架的System命名空間中的對(duì)應(yīng)類(lèi)型等同,是它們的別名,參見(jiàn)下表:
C#類(lèi)型 |
C++/CLI類(lèi)型 |
.NET框架類(lèi)型 |
值類(lèi)型 |
字節(jié)/位數(shù) |
范圍和精度 |
bool |
bool |
System.Boolean |
真或假 |
-/1 |
true或false |
char |
wchar_t |
System.Char |
字符 |
2/16 |
所有UTF-16編碼(0~0xFFFF) |
sbyte |
[signed] char |
System.SByte |
整數(shù) |
1/8 |
-128 ~ 127 |
byte |
unsigned char |
System.Byte |
1/8 |
0 ~ 255 |
|
short |
[signed] short |
System.Int16 |
2/16 |
-32 768 ~ 32 767 |
|
ushort |
unsigned short |
System.UInt16 |
2/16 |
0 ~ 65 535 |
|
int |
[signed] int/long |
System.Int32 |
4/32 |
-2 147 483 648 ~ 2 147 483 647 |
|
uint |
unsigned int/long |
System.UInt32 |
4/32 |
0 ~ 4 294 967 295 |
|
long |
[signed] long long |
System.Int64 |
8/64 |
-9 223 372 036 854 775 808
~ 9 223 372 036 854 775 807 |
|
ulong |
unsigned long long |
System.UInt64 |
8/64 |
0 ~ 18 446 744 073 709 551 615 |
|
float |
float |
System.Single |
浮點(diǎn)數(shù) |
4/32 |
±1.5×10-45 ~ ±3.4×1038 |
double |
double |
System.Double |
8/64 |
±5.0×10-324 ~ ±1.7×10308 |
|
decimal |
Decimal |
System.Decimal |
高精度十進(jìn)制小數(shù) |
16/128 |
±1.0×10-28 ~ ±7.9×1028 |
其中的sbyte、byte、short、ushort、int、uint、long、ulong和char等9種類(lèi)型為整數(shù)類(lèi)型(integral types)。
可見(jiàn),C# 的簡(jiǎn)單類(lèi)型的名稱(chēng),比C++的更簡(jiǎn)潔明了。如signed被省略;unsigned簡(jiǎn)寫(xiě)成了u,從而unsigned short、unsigned int和unsigned long long分別被改成了ushort 、uint和ulong;char對(duì)應(yīng)于C++的wchar_t;sbyte部分對(duì)應(yīng)于C++的char,但是sbyte只表示單字節(jié)的有符號(hào)整數(shù),不再表示單字節(jié)的普通字符,因?yàn)樵贑# 不支持單字節(jié)字符。因此,在C# 中,不再需要C++中的L"……"運(yùn)算符來(lái)進(jìn)行普通字符串常量向?qū)捵址霓D(zhuǎn)換。
與C++非常不同等一點(diǎn)是,C# 中所有整數(shù)類(lèi)型(如int和long)的字節(jié)數(shù)都是固定的,不再像C/C++那樣依賴(lài)于CPU的字長(zhǎng)和操作系統(tǒng)的位數(shù)。
還有幾點(diǎn)與C++不同的是:
可以用(從System.Object繼承的)GetType()方法來(lái)獲得指定變量或?qū)ο蟮念?lèi)型名稱(chēng)。簡(jiǎn)單類(lèi)型返回的是.NET的類(lèi)型名,對(duì)象則返回類(lèi)或結(jié)構(gòu)的名稱(chēng)。例如:
int i = 1;
MyClass obj;
Console.WriteLine("The type of variable i is {0} and object obj is {1}.", i.GetType(), obj.GetType());
輸出為:
The type of variable i is System.Int32 and the object obj is MyClass.
具有.NET的高精度十進(jìn)制小數(shù)類(lèi)型System.Decimal的對(duì)應(yīng)類(lèi)型decimal,該類(lèi)型主要用于貨幣(money)的數(shù)量計(jì)算。在C# 中可以用m或M后綴,將一個(gè)實(shí)數(shù)常量指定為decimal類(lèi)型。沒(méi)有后綴的實(shí)數(shù)會(huì)被視為double類(lèi)型,直接賦值給decimal變量會(huì)導(dǎo)致編譯錯(cuò)誤。例如:
decimal money = 1234.5m; // 正確
decimal d = 1234.5; // 編譯錯(cuò)誤
新聞熱點(diǎn)
疑難解答
圖片精選