Re: [問題] 新手問題 (string)123

看板C_Sharp (C#)作者 (mize)時間12年前 (2013/01/29 11:49), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《putumaxally (Puma)》之銘言: : 可以請問一下為什麼 不能用(string)123把int轉成string : 用Convert.ToString(123)跟123.ToString()就可以 : 數字型別的轉換就不會有出錯。 以下做為補充(可能有些許錯誤,或是未實際驗證過的麻煩幫我補充3Q) 轉型成功條件:1.兩者必須是繼承關係 2.或是基底轉Class 3.或預設之轉換(ex.數值) 轉型的狀況: (String)string 結果:True 原因:C#內有定義基底類別的轉換 (Int)int 結果:True 原因:同上 (Int)String 結果:Fail 原因:String這個Class與Int之間無定義轉換且兩者非繼承 (Object)String 結果:True 缺點:轉型後將會失去String內部分內容(屬性、方法等等) 原因:String為繼承Object之Class,為向上轉型 繼承階層架構 System.Object System.String (轉自MSDN-String類別) (感謝miterator補充,實測後並不會失去String內的內容,這邊我原本的意思是泛指 子Class轉父Class的結果會失去原有的屬性與方法,故是無法使用而不是消失) (String)Object 結果:True 原因:同上,為向下轉型 (Int)Double 結果:True 缺點:將會失去Double的精準度(小數點) 原因:內建數值間轉換 (Double)Int 結果:True 原因:同上 MSDN:隱含轉換表http://ppt.cc/TgBo MSDN:明確轉換表http://ppt.cc/7aHX 方法:Int內的ToStrng() public override string ToString() { return Number.FormatInt32(this, (string) null,NumberFormatInfo.CurrentInfo); } 至於裏面寫什麼我就沒深入去一個一個了解了。 大致上原Po只需要了解何謂轉型、方法,而且搞清楚轉型的條件與限制大致上就可以解決 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.85.47

01/29 11:53, , 1F
(object)string, 並不會"失去"string內部分內容.
01/29 11:53, 1F
※ 編輯: m339606 來自: 114.33.85.47 (01/29 13:01)
文章代碼(AID): #1H1qR8v4 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1H1qR8v4 (C_Sharp)