Person tempPerson;
Console.WriteLine("Enter the name of this new person.");
tempPerson.Name = Convert.ToString(Console.ReadLine());
Console.WriteLine("Now their age.");
tempPerson.Age = Convert.ToInt32(Console.ReadLine());
peopleList.Add(tempPerson);
RunProgram();
在tempPerson.Name
,错误列表显示“未分配使用局部变量'tempPerson'。下面是创建每个Person对象的类。
class Person : PersonCreator
{
public Person(int initialAge, string initialName)
{
initialAge = Age;
initialName = Name;
}
public int Age
{
set
{
Age = value;
}
get
{
return Age;
}
}
public string Name
{
set
{
Name = value;
}
get
{
return Name;
}
}
}
我不明白为什么这是一个问题。在tempPerson.Age,根本没有问题。仅使用tempPerson.Age运行程序不会带来任何错误。我的Person类有问题吗?
答案 0 :(得分:8)
tempPerson
永远不会初始化为Person
对象,因此它是null
- 对变量的任何成员的任何调用都将导致NullReferenceException
。
你必须在使用前初始化变量:
var tempPerson = new Person();
答案 1 :(得分:1)
您不通过定义类或声明类类型的变量来创建对象。您必须通过在类上调用new来创建对象,否则使用null初始化变量。执行以下操作:
Person tempPerson = new Person ();
Console.WriteLine("Enter the name of this new person.");
tempPerson.Name = Convert.ToString(Console.ReadLine());
答案 2 :(得分:0)
您的Person类错误,应该是:
class Person : PersonCreator
{
public Person(int initialAge, string initialName)
{
Age = initialAge;
Name = initialName;
}
public int Age
{
set;
get;
}
public string Name
{
set;
get;
}
}
答案 3 :(得分:0)
您的变量tempPerson刚刚声明,但未初始化。 您必须调用Person的构造函数,但这需要一个空构造函数:
Person tempPerson = new Person();
另一种解决方法,我会像下面这样实现:
Console.WriteLine("Enter the name of this new person.");
string name = Convert.ToString(Console.ReadLine());
Console.WriteLine("Now their age.");
string age = Convert.ToInt32(Console.ReadLine());
peopleList.Add(new Person(name, age));