0

単純な User クラスを作成していますが、パブリック フィールドだけを使用するのではなく、プライベート フィールドでパブリック プロパティを使用する場合は問題になりますか?

これが私が意味することの例です:

public class clsUser
{
private string name;
private string lName;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name= value;
        }
    }

    public string LName
    {
        get
        {
            return lName;
        }
        set
        {
            lName= value;
        }
    }

public clsUser(string userID)
    {

//get the user id here and set the properties

        this.name= getName(userID);
        this.lName= getLName(userID);      
    }

}

または私はちょうど作ることができます

public string name;
public string lName;

publicそして今、これらすべてを入力することを心配しています:

public string Name
{
    get
    {
        return name;
    }
    set
    {
        name= value;
    }
}

次に、次のように別のページでこれらを使用してフォームに入力します。

clsUser cUser - new clsUser("myid");
txtSomething.Text = cUser.name;

等々...

私の質問は、プロパティを最初にプライベートとして再入力し、次にパブリックとして再入力する必要がある理由だと思います (すべての Web の例で見たように)。そもそも公開しないのはなぜですか?

4

1 に答える 1

5

フィールドとプロパティを混同しています。

String name;フィールドです。
プロパティとは異なり、それを制御することはできません。
最終的に検証を追加したり、イベントやその他のロジックを変更したりする場合は、それをプロパティに変更する必要があります。これにより、コンパイルされたコードが壊れます。
特定の機能 (バインディングなど) は、プロパティでのみ機能します。

代わりに、自動実装されたプロパティを使用して、コンパイラに定型文をすべて生成させることができます。

public String Name { get; set; }
于 2013-02-27T19:30:34.860 に答える