標籤:有符號 spec 轉型 str unicode 符號 c# exce 異常
編譯器直接支援的資料類型稱為基元類型。基元類型直接映射到Framework類庫(FCL)中存在的類型。比如在c#中int直接映射到曹衍濤
System.Int32類型.
IL(IL可以指Intermediate Language,同MSIL(Microsoft Intermediate Language),是將.NET代碼轉化為機器語言的一個中繼語言的縮寫)
CLS(common language Specification)Common Language Specification
下為c#基元類型與對應FCL類型
| c#基元類型 |
FCL類型 |
CLS相容 |
說明 |
| sbyte |
System.SByte |
否 |
有符號8位值 |
| byte |
System.Byte |
是 |
無符號8位值 |
| short |
System.Int16 |
是 |
有符號16位值 |
| ushort |
System.UInt16 |
否 |
無符號16位值 |
| int |
System.Int32 |
是 |
有符號32位值 |
| uint |
System.UInt32 |
否 |
無符號32位值 |
| long |
System.Int64 |
是 |
有符號64位值 |
| ulong |
System.UInt64 |
否 |
無符號64位值 |
| char |
System.Char |
是 |
16位Unicode字元 |
| float |
System.Single |
是 |
IEEE32位浮點值 |
| double |
System.Double |
是 |
IEEE64位浮點值 |
| bool |
System.Boolean |
是 |
true/false |
| decimal |
System.Declmal |
是 |
128位高精度浮點值 |
| string |
System.String |
是 |
一個字元數組 |
| object |
System.Object |
是 |
所有類型的基類 |
| dynamic |
System.Object |
是 |
對於CLR,dynamic與objecty完全一致 |
編譯器能識別常見的編程模式,產生必要的IL,使代碼能像預期工作
c#編譯器支援與類型轉換、文本常量以及操作符有關的模式
如果轉換時安全的(不會遺失資料),c#允許進行隱式轉換,若不安全則要求顯示轉換。比如說Int32轉為Int64可以隱式轉換,反之需要顯示轉換。
除了轉型,基元類型還能寫成文本常量,文本常量可以被看作是類型本身的一個執行個體。
Console.WriteLine(123.ToString()+123.ToString());//"123123"
checked與unchecked類型操作
對基元類型執行的許多操作都可能造成溢出:
Byte b=100;
b=(Byte )(b+200);//byte取值範圍為-128~127
程式員可以在特定的地區用checked與unchecked控制溢出檢查
checked操作符
Byte b=100;
b=(Byte )checked(b+200);//不會拋出overflowexception異常
b=checked((Byte )(b+200));//會拋出overflowexception異常
除了chacked和unchecked操作符,c#還支援checked和unchecked語句,他們造成一個塊中所有的運算式都進行或者不進行溢出檢查。
checked{//開始一個checked模組
Byte b=100;
b+=200;//該運算式會進行溢出檢查
}//結束一個checked模組
程式設計語言的基元類型