0

所以我有一堂课:

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
    }

}

我有一些代码可以实例化一个对象并将其添加到数据库中,返回 type 的对象Person

Person me = new Person()
{
    Firstname = "Piers",
    Lastname = "Karsenbarg"
};

但是,当我调试它并进入AddPerson()方法时,属性this.Firstnamethis.Lastname没有任何东西(在这种情况下是空的)。

我哪里错了?

4

2 回答 2

6

这是因为属性是在调用构造函数之后分配的。基本上,这个:

Person me = new Person()
{
    Firstname = "Piers",
    Lastname = "Karsenbarg"
};

等同于:

Person me = new Person();
me.Firstname = "Piers";
me.Lastname = "Karsenbarg";

这里唯一的区别是语法。在您的情况下,您可能希望通过参数化构造函数 ( new Person("Piers", "Karsenbarg")) 传递这些变量。

于 2012-11-20T16:15:13.090 回答
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
    }

}

一个人不能没有名字或姓氏就存在,所以这是合乎逻辑的

于 2012-11-20T16:19:47.937 回答