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
    }

}

そして、オブジェクトをインスタンス化してデータベースに追加し、タイプのオブジェクトを返すコードがいくつかあります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 に答える