2010-12-04 33 views
8

此代碼運行正常廣東話投浮法爲int如果對象

float ff = 5.5f; 
int fd = (int) ff; 

Console.Write(fd); 

在哪裏,因爲這代碼犯規

float ff = 5.5f; 
object jf = ff; 
int fd = (int) jf; 

Console.Write(fd); 

什麼規則亞軍原因導致這種情況發生呢?

回答

13

你可以將一個浮點數轉換爲一個int值,但是你不能將一個盒裝的浮點數轉換爲一個int - 你必須首先對它進行解除操作。

int fd = (int)(float)jf; 

閱讀Eric Lippert的帖子Representation and Identity瞭解更多詳情。

6
float ff = 5.5f; 
object jf = ff; 
int fd = (int) jf; 

在這裏,當你從浮到對象,實際類型的JF是浮動框,你是一個拆箱裝箱的浮動直接爲int未運行時所接受。

所以你需要先拆箱才能浮動然後再次施放到int。