作者m339606 (mize)
看板C_Sharp
标题Re: [问题] 新手问题 (string)123
时间Tue Jan 29 11:49:24 2013
※ 引述《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
1F:→ iterator:(object)string, 并不会"失去"string内部分内容. 01/29 11:53
※ 编辑: m339606 来自: 114.33.85.47 (01/29 13:01)