什么是顯式轉(zhuǎn)換
Explicit Conversion
就是在將一種類型轉(zhuǎn)換成另外一種類型時,需要額外的代碼來完成這種轉(zhuǎn)換。
顯式轉(zhuǎn)換需要注意,它的結(jié)果不一定是我們想要的。
如果 n 是 258,那么 b 就是 2;
……
由此還得說下 Convert,Convert 這個類用來轉(zhuǎn)換類型,它有很多方法,比如 ToInt32,就是轉(zhuǎn)換成 int。它涉及的類型跨度很大,比如可將 object、string 等轉(zhuǎn)換成 int,而 (int) 則只能將數(shù)字類型轉(zhuǎn)換成 int。
更多相關(guān)內(nèi)容,請參見 Convert、Parse、TryParse、(int) 的區(qū)別。
顯式數(shù)值轉(zhuǎn)換表(摘自 MSDN)
從 | 到 |
---|---|
sbyte | byte、ushort、uint、ulong 或 char |
byte | Sbyte 或者char |
short | sbyte、byte、ushort、uint、ulong 或 char |
ushort | sbyte、byte、short 或 char |
int | sbyte、byte、short、ushort、uint、ulong 或 char |
uint | sbyte、byte、short、ushort、int 或 char |
long | sbyte、byte、short、ushort、int、uint、ulong 或 char |
ulong | sbyte、byte、short、ushort、int、uint、long 或 char |
char | sbyte、byte 或 short |
float | sbyte、byte、short、ushort、int、uint、long、ulong、char 或 decimal |
double | sbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 decimal |
decimal | sbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 double |
備注(摘自 MSDN)
顯式數(shù)值轉(zhuǎn)換可能導(dǎo)致精度損失或引發(fā)異常。
將 decimal 值轉(zhuǎn)換為整型時,該值將舍入為與零最接近的整數(shù)值。如果結(jié)果整數(shù)值超出目標類型的范圍,則會引發(fā) OverflowException。
將 double 或 float 值轉(zhuǎn)換為整型時,值會被截斷。如果該結(jié)果整數(shù)值超出了目標值的范圍,其結(jié)果將取決于溢出檢查上下文。在 checked 上下文中,將引發(fā) OverflowException;而在 unchecked 上下文中,結(jié)果將是一個未指定的目標類型的值。
將 double 轉(zhuǎn)換為 float 時,double 值將舍入為最接近的 float 值。如果 double 值因過小或過大而使目標類型無法容納它,則結(jié)果將為零或無窮大。
將 float 或 double 轉(zhuǎn)換為 decimal 時,源值將轉(zhuǎn)換為 decimal 表示形式,并舍入為第 28 個小數(shù)位之后最接近的數(shù)(如果需要)。根據(jù)源值的不同,可能產(chǎn)生以下結(jié)果:
如果源值因過小而無法表示為 decimal,那么結(jié)果將為零。
如果源值為 NaN(非數(shù)字值)、無窮大或因過大而無法表示為 decimal,則會引發(fā) OverflowException。
將 decimal 轉(zhuǎn)換為 float 或 double 時,decimal 值將舍入為最接近的 double 或 float 值。
新聞熱點
疑難解答
圖片精選