对象.ToString()和Convert.ToString(对象)有什么区别吗?

ewqriq 2014-02-24 11:47:54
为什么很多人的代码里面喜欢写Convert.ToString(对象)这样的代码,而不是直接"对象".ToString()呢? 对象.ToString()编辑时的检查还更直接啊
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
智商余额不足 2014-02-24
  • 打赏
  • 举报
回复

public static String ToString(String value,IFormatProvider provider) {
     Contract.Ensures(Contract.Result<string>() == value);  // We were always skipping the null check here.
     return value; // avoid the null check
}
智商余额不足 2014-02-24
  • 打赏
  • 举报
回复

//Convert
public static string ToString(Object value) {
     return ToString(value,null);
}
 
public static string ToString(Object value, IFormatProvider provider) {
     IConvertible ic = value as IConvertible;
     if (ic != null)
          return ic.ToString(provider);
     IFormattable formattable = value as IFormattable;
     if (formattable != null)
         return formattable.ToString(null, provider);
     return value == null? String.Empty: value.ToString();
}
偶是菜鸟 2014-02-24
  • 打赏
  • 举报
回复
toString(),null值会报错,而toConvert()不会
bdmh 2014-02-24
  • 打赏
  • 举报
回复
内部调用的还是ToString
8992892088 2014-02-24
  • 打赏
  • 举报
回复
一般情况下,这两种方法都可以通用,但是当返回的数据类型中有可能出现null值时如果调用tostring方法了,就会返回NullReferenceException,除非你要捕捉此异常再做处理,否则在这种情况下就应考虑使用Convert.ToString()方法了,因为Convert.ToString(null)不会抛出异常而是返回空字符串. 举一个常见的例子,就是平常的网页参数传递,比如在网页登录验证中从QueryString或当前会话Session中获得对应参数值,我们有下面两种方法: 1.使用Convert.ToString(param)方法: string strUserName = Convert.ToString(Session["UserName"]); string strUserPwd = Convert.ToString(Session["UserPwd"]); 2.直接调用ToString()方法: string strUserName = Session["UserName"].ToString; string strUserPwd = Session["UserPwd"].ToString; 当Session["UserName"]或Session["UserPwd"]返回null值时,使用方法1返回的值是空字符串,而直接调用ToString()方法则会抛出NullReferenceException,你可以根据自己的实际需要来决定使用哪一个方法更合适。
cheng2005 2014-02-24
  • 打赏
  • 举报
回复
当然不一样了,见MSDN 参数 value类型:System.Object 一个对象,用于提供要转换的值,或 null。 返回值 类型:System.String value 的字符串表示形式,如果 value 为 null,则为 String.Empty。 备注 转换 value 成字符串表示,此方法尝试调用value 的 IConvertible.ToString 实现。 如果 value 未实现该IConvertible 接口,则此方法尝试调用IFormattable.ToString 的 value 实现。 如果值类型未实现 IFormattable 接口,则此方法将调用 value的基础类型的 ToString方法。
Ny-6000 2014-02-24
  • 打赏
  • 举报
回复
没有地.

110,538

社区成员

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

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

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