三种类型转换方式怎样区别

Microtigers 2008-12-23 11:24:05
(string)i
convert.tostring(i);
i.tostring();
怎么区别这三种转换,
哪种情况用哪种啊!
什么情况下可以通用.
...全文
114 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdm55 2008-12-24
  • 打赏
  • 举报
回复
具体情况 具体分析 还是convert.tostring(i) 通用
接着i.tostring()
king19840811 2008-12-24
  • 打赏
  • 举报
回复
(string)i 强制转换效率最高。直接生成IL代码
convert.tostring(i); 安全转换,即以checked方式执行转换
i.tostring(); 效率最差的一种,需要装箱。
详细请参见框架设计第二版clr via 第11章第一节
zhu4139365 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wonture 的回复:]
(string)i 是强制类型转化,并不是所有类型的东西都没强制类型转化成字符串。
convert.tostring(i);这种方法好,支持的对象可以看提示。绝大部分的类型都可以这样转换成字符串。
i.tostring();i对象如果有tostring()方法的话都可以用。
[/Quote]up
dayizhixiaotutu 2008-12-23
  • 打赏
  • 举报
回复
顶顶
cheng_er 2008-12-23
  • 打赏
  • 举报
回复
还真不清楚

不过C#里面不建议用这种弱数据类型的强制转换吧(string)i,这种做法是传承了C++里面的
建议用方法转换,不过剩余两种,可不知道区别了
wonture 2008-12-23
  • 打赏
  • 举报
回复
(string)i 是强制类型转化,并不是所有类型的东西都没强制类型转化成字符串。
convert.tostring(i);这种方法好,支持的对象可以看提示。绝大部分的类型都可以这样转换成字符串。
i.tostring();i对象如果有tostring()方法的话都可以用。
koukoujiayi 2008-12-23
  • 打赏
  • 举报
回复
第一种和第二种(string)i ;convert.tostring(i);
从理论上来说是一种装箱拆箱过程,
将值类型转换为引用类型,就是装箱过程,反之就是拆箱过程,

第三种i.tostring(); 仅将值类型格式转为字符型,没有装箱过程;

总结:有装箱拆箱过程的效率肯定要比没有装箱拆箱的要差!!
也就是说第一种和第二种理论上来说,效率要比第三种差!!
bulong0721 2008-12-23
  • 打赏
  • 举报
回复
(string)i有2中情况使用到:

1:object obj = "test string";
string str = (string)obj;
2:
public class Class1
{
public static explicit operator string(Class1 a)
{
return "test string";
}
}
Class1 cls1 = new Class1();
string str = (string)cls1;

Convert.ToString(i)是调用Convert类的实现,优点i可以为null,返回string.Empty

i.ToString() 调用object或(i)类的ToString()方法。i不能为null


vickjiang 2008-12-23
  • 打赏
  • 举报
回复
个人认为:
(string)i 是将本身是String类型的变量暂时改变了类型(例如被object包装)的还原方式
convert.tostring(i); 是强制转换
i.tostring(); 是将i,不管什么类型用文本表示出来
king19840811 2008-12-23
  • 打赏
  • 举报
回复
convert.tostring(i);感觉这个更适用其它类型的转换 string类型的一般还是用tostring()

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧