请教一个问题
string a = null;
string b = a.toString();
报错,这个原因知道int? a = null;
string b = a.toString();
不报错,b值为【""】;
小弟愚笨,不明其理
给详细解释下,非常感谢!

解决方案 »

  1.   

    null是空引用,任何调用等于null的引用的类方法都会出现错误,
      

  2.   

    int? a = null;
    其实是
    Nullable<int> a = new Nullable<int>();
    a.HasValue = false;
    a.Value = null;
      

  3.   

    因为nullable是静态类,所以tostring方法不需要实例,int?等于Nullable<int>,虽然等于null,但因为tostring是静态,所以可以没有实例调用,
      

  4.   

    int? 表示可空的int类型 a
      

  5.   

    修改下:
    Nullable<int> a = new Nullable<int>();
    a.HasValue = false;
      

  6.   

    因为Nullable<T>的ToString()方法被重写了,所以返回"",不报错。
    public override string ToString()
    {
        if (!this.HasValue)
        {
            return "";
        }
        return this.value.ToString();

      

  7.   


    可空类型其实就是System.Nullable结构的实例Nullable(Of T)的ToString方法,如果HasValue==false,他会返回一个""