在下面的代碼混亂......關於值類型的拳擊
int i=5;
object o = 5;
Console.WriteLine(o); //prints 5
我有三個問題:
1)什麼額外的/有用的功能是由5
居住在收購變量o
表示變量i
所代表的5
沒有?
2)如果一些代碼期待值類型,那麼我們就可以通過它的INT i
,但如果期望引用類型,它可能不會在o
盒裝反正5感興趣。那麼,什麼時候在代碼中顯式使用裝箱轉換?
3)Console.WriteLine(o)
怎麼會打印出5而不是System.Object?
這是一個有點誤導。你可以在Int32類型的變量上調用GetType()和GetHasCode()等。這與正在裝箱或未裝箱的值類型無關。 – KeithMahoney 2010-10-19 22:59:59
@KeithMahoney你是對的:我錯了。我拿出了C#3.0語言規範,並且類型系統很好地統一。中心差異 - 價值對比參考類型 - 涉及對象如何與其數據相關聯。 – 2010-10-20 00:39:38