所以我有一个班级:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
public Person()
{
AddPerson();
}
private void AddPerson()
{
string fn = this.Firstname;
string ln = this.Lastname;
// Do something with these values
// Probably involves adding to a database
}
}
我有一些代码可以实例化一个对象并将其添加到数据库中,返回Person
类型的对象:
Person me = new Person()
{
Firstname = "Piers",
Lastname = "Karsenbarg"
};
但是,当我调试它并转到AddPerson()
方法时,属性this.Firstname
和this.Lastname
中没有任何内容(在这种情况下为空)。< / p>
我哪里错了?
答案 0 :(得分:6)
这是因为在调用构造函数之后会分配属性。基本上,这个:
Person me = new Person()
{
Firstname = "Piers",
Lastname = "Karsenbarg"
};
与相同:
Person me = new Person();
me.Firstname = "Piers";
me.Lastname = "Karsenbarg";
这里唯一不同的是语法。在您的情况下,您可能希望通过参数化构造函数(new Person("Piers", "Karsenbarg")
)传递这些变量。
答案 1 :(得分:1)
您尚未为属性指定任何值。我建议在构造函数中传递你想要的名字:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
public Person(string firstname, lastname)
{
this.Firstname = firstname;
this.Lastname = lastname;
AddPerson();
}
private void AddPerson()
{
string fn = this.Firstname;
string ln = this.Lastname;
// Do something with these values
// Probably involves adding to a database
}
}
如果没有名字或姓氏,一个人就不能存在,所以这具有逻辑意义