-5

我有以下代码:

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()

有人可以对此有所了解。

已编辑

4

1 回答 1

4

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

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

作品

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

不工作

这是因为向字符串添加空值是合法的,但在空实例上调用方法则不合法。

请参阅此问题: 为什么将 null 添加到字符串合法?

于 2013-08-23T14:58:24.337 回答