为什么我的值没有传递给我的类的属性?

时间:2012-11-20 16:14:08

标签: c# oop class

所以我有一个班级:

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.Firstnamethis.Lastname中没有任何内容(在这种情况下为空)。< / p>

我哪里错了?

2 个答案:

答案 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
    }

}

如果没有名字或姓氏,一个人就不能存在,所以这具有逻辑意义