爲什麼不能將已裝箱的int
直接投射到double
?鑄造盒裝值
object o = 12;
double d = (double)o;
這拋出了無效的轉換異常。相反,它似乎必須首先投射爲int
,然後再投射到double
。
object o = 12;
double d = (double)(int)o;
我敢肯定,簡單的答案是「因爲這就是拳擊的作品」,但我希望有人可以在這裏擺脫一些光。
爲什麼不能將已裝箱的int
直接投射到double
?鑄造盒裝值
object o = 12;
double d = (double)o;
這拋出了無效的轉換異常。相反,它似乎必須首先投射爲int
,然後再投射到double
。
object o = 12;
double d = (double)(int)o;
我敢肯定,簡單的答案是「因爲這就是拳擊的作品」,但我希望有人可以在這裏擺脫一些光。
退房從今天早些時候這樣一個問題:如果目標類型是完全一樣被堵住原有的類型,所以異常被拋出Why am I getting InvalidCastException?
拆箱操作才能成功。 John Leidegren提供的This link詳細解釋。
如果你不知道在編譯時的原始類型:
object o = 12;
double d = (double)Convert.ChangeType(o, typeof(double));
參見:表示與認同 - 神話般的冒險編碼(http://blogs.msdn.com/b /ericlippert/archive/2009/03/19/representation-and-identity.aspx) – Ani 2011-03-15 13:52:28
@Ani - 把這個作爲答案,我會在一秒鐘內讚揚它! – 2011-03-15 13:53:38
同上 - ani - 對我來說看起來是正確的答案 – 2011-03-15 13:54:02