1

これら 2 つの初期化パターンが毎日のコードで使用されているのをいつも目にします。好み以外に、どちらかを選択する決定的な理由を探していましたか?

パターン1

public class School
{
    private List<User> _users;

    public School()
    {
        _users = new List<User>();
    }

    public List<User> Users
    {
        get
        {
            return _users;
        }
        set
        {
            _users = value;
        }
    }
}

パターン 2

public class School
{
    public School()
    {
        this.Users = new List<User>();
    }
    public List<User> Users { get; set;}
}
4

5 に答える 5

1

それらは同じものです。2 つ目は「シンタックス シュガー」です。これは、コンパイラが基本的に反復型入力を処理することを意味します。

于 2013-04-29T01:30:55.523 に答える
1

バッキング変数にアクセスする必要がある場合は、最初の変数を使用してください。それ以外の場合は、2 番目を使用して、.NET フレームワークにバッキング変数を生成させます。

ただし、IListクラスのリストを開いて完全に変更するため、をパブリック プロパティとして公開することは必ずしも良い考えではありません。のコンテンツを公開するだけの場合は、列挙子IListの実装を検討してください。

于 2013-04-29T01:30:57.273 に答える
0

パターン 2 は auto プロパティを使用しています。バッキング フィールドにアクセスする必要がない場合は、入力しないでください。後でいつでも追加できます。これはカプセル化の一種です。

于 2013-04-29T01:30:27.500 に答える