[問題] 物件轉型別(大轉小)的損失?

看板C_Sharp (C#)作者 (tomex_ou)時間20年前 (2005/05/25 19:47), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
當浮點數大->小作型別強制轉換時,我們知道損失了小數點後的值: 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)

140.115.205.46 05/25, , 1F
沒有損失啊...轉換頂多損失效率~
140.115.205.46 05/25, 1F

140.115.205.46 05/25, , 2F
因為轉換必須type checking~
140.115.205.46 05/25, 2F

140.115.205.46 05/25, , 3F
實際上 的確REF TYPE 如你所說 但是所謂大轉小
140.115.205.46 05/25, 3F

140.115.205.46 05/25, , 4F
好難說 這是oo的一種概念...不是什麼"大小"...
140.115.205.46 05/25, 4F

211.74.98.216 05/26, , 5F
我也很想知道 =X
211.74.98.216 05/26, 5F
文章代碼(AID): #12b6MrXT (C_Sharp)
文章代碼(AID): #12b6MrXT (C_Sharp)