看板 C_Sharp 關於我們 聯絡資訊
當浮點數大->小作型別強制轉換時,我們知道損失了小數點後的值: float f = 1.2L; int i = (int)f; 而所有的類別/物件都是從object繼承而來的, string s = "ABC"; object o = (object)s; string s1 = (string)o; s->s1中間,損失的又是什麼呢? ps. 我曾質疑為何compiler要允許物件大轉小呢? 後來看書,寫說: 人->我,所以我=人,人=我 只是不清楚轉換間的損失是啥罷了... 在猜,是否繼承的物件之延伸的變數/methods被隱住了, 但實質位址並沒有消失 因此物件的大小轉換,其實只是遮住而非消滅多出來的東西?! 因為對於ref type的物件而言, 等號(=)是新物件的r-value指向同一個物件heap位址 並沒有作真正的資料異動,因此轉換回來沒有損失。 不知我想得對不對?! -- 貫徹分享精神 我為人人,人人為我 ※ 編輯: tomex 來自: 60.248.89.46 (05/25 19:57)
cplusplus:沒有損失啊...轉換頂多損失效率~ 140.115.205.46 05/25
cplusplus:因為轉換必須type checking~ 140.115.205.46 05/25
cplusplus:實際上 的確REF TYPE 如你所說 但是所謂大轉小 140.115.205.46 05/25
cplusplus:好難說 這是oo的一種概念...不是什麼"大小"... 140.115.205.46 05/25
liunate:我也很想知道 =X 211.74.98.216 05/26