Re: [問題] 新手問題 (string)123
※ 引述《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
01/29 11:53, 1F
※ 編輯: m339606 來自: 114.33.85.47 (01/29 13:01)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章