我有以下代码:
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()
有人可以对此有所了解。
被修改
答案 0 :(得分:4)
我猜你的代码示例不正确,因为它代表你的问题并且你实际上看到了这种行为:
return id.ToString() + " " + name + " " + dob.ToString();
<强>工作原理强>
return id.ToString() + " " + name.ToString() + " " + dob.ToString();
不起作用
这是因为向字符串添加null 值是合法的,但调用null 实例上的方法不是。