2011-06-10 71 views
3

可能重複:
Why can't I unbox an int as a decimal?C#/。NET:爲什麼我不能將這個小數轉換爲int?

好吧,C#/。NET大師,誰能告訴我,爲什麼這個轉換工作。

static void Main(string[] args) 
{ 
    int _int = 0; 
    decimal _decimal = 1; 

    _int = (int)_decimal; 

    Console.ReadLine(); 
} 

...但都不這些呢?

static void Main(string[] args) 
{ 
    int _int = 0; 
    decimal d = 1; 
    object _decimal = d; 

    _int = (int)_decimal; 

    Console.ReadLine(); 
} 

static void Main(string[] args) 
{ 
    int _int = 0; 
    object _decimal = 1M; 

    _int = (int)_decimal; 

    Console.ReadLine(); 
} 

我可以投一個小數爲int,只要我所從鑄造是一個顯式聲明的小數類型,但是當小數存儲在一個對象,我不能投一個小數爲int類型?那是怎麼回事?

注:我知道我大概可以使用Convert.ToInt32(),但我試圖找出這個這裏這是行不通的。

+1

您也可以分兩步進行:「_int =(int)(decimal)_decimal」。 – Joe 2011-06-10 13:39:23

+0

對此的答案似乎是在相關的鏈接之一:[爲什麼我不能取消一個int作爲小數?](http://stackoverflow.com/questions/1085097/why-cant-i-unbox-一個-INT作爲一種十進制) – RickL 2011-06-10 13:39:33

回答