代码之家  ›  专栏  ›  技术社区  ›  Babu James

null字符串对象上的String.ToString()方法

  •  -5
  • Babu James  · 技术社区  · 13 年前

    我有以下代码:

    namespace Rextester
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                //Your code goes here
                var obj=(person)Activator.CreateInstance(typeof(person));
                Console.WriteLine(obj);
            }
        }
         public class person
            {
                public int id { get; set; }
                public string name { get; set; }
                public DateTime dob { get; set; }
    
                public override string ToString()
                {
                    return id.ToString() + " " + name + " " + dob.ToString();
                }
            }
    }
    

    其产生以下输出:

    0  1/1/0001 12:00:00 AM
    

    但是,如果更改 person.ToString() 至以下内容:

    public override string ToString()
    {
            return id.ToString() + " " + name.ToString() + " " + dob.ToString();
    }
    

    我得到以下错误:

    System.NullReferenceException: Object reference not set to an instance of an object.
       at Rextester.person.ToString()
    

    有人能解释一下吗。

    已编辑

    1 回复  |  直到 13 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    我猜你的代码示例在你的问题中是不正确的,你实际上看到了这种行为:

    return id.ToString() + " " + name + " " + dob.ToString(); 
    

    作品

    return id.ToString() + " " + name.ToString() + " " + dob.ToString();
    

    不起作用

    这是因为添加了一个null 价值 到字符串是合法的,但在null上调用方法 例子 不是。

    请参阅此问题: Why is adding null to a string legal?