鼠·神·泪.NET

导航

 

先看一段代码:

string name = null;
Session["name"] = name;
string out1 = Convert.ToString(name);
string out2 = Convert.ToString(Session["name"]);

你们觉得out1与out2应该是输出什么?是null值?还是空字符串?
嘿嘿,都不是,out1输出null,our2输出空字符串。
看看MS的代码就知道了:
public static string ToString(string value)
{
      return value;
}
public static string ToString(object value)
{
      return Convert.ToString(value, (IFormatProvider) null);
}
public static string ToString(object value, IFormatProvider provider)
{
      IConvertible convertible1 = value as IConvertible;
      if (convertible1 != null)
      {
            return convertible1.ToString(provider);
      }
      if (value != null)
      {
            return value.ToString();
      }
      return string.Empty;
}
其它一些以基元类型值类型做参数的都是直接调用其.ToString方法,因为值类型不能为null。

这不是一个大的Bug,不过却应该算是一个Bug。毕竟这违反了重载的一致性。

posted on 2005-11-11 20:45  鼠·神·泪.NET  阅读(1768)  评论(19编辑  收藏  举报