2

私の質問は、「プロパティとフィールド」という古いトピックの一部である可能性があります。

変数がクラス外では読み取り専用であるが、クラス内で変更する必要がある状況があります。2 つの方法でアプローチできます。

初め:

private Type m_Field;
public Type MyProperty { get { return m_Field; } }

2番:

public Type MyProperty { get; private set; }

いくつかの記事 (主に、パブリック フィールドの代わりにパブリック プロパティを使用する利点を取り上げたもの) を読んだ後、2 番目の方法が最初の方法よりも利点があるかどうかはわかりませんでしたが、コードの記述は少なくなりました。どちらがプロジェクトで使用するのに適しているか (およびその理由) に興味があります。または、それは単なる個人的な選択です。

たぶん、この質問はSOに属していないので、事前にお詫び申し上げます。

4

6 に答える 6

2

2 番目のバージョンの方が短いので、通常はこちらの方が優れていると思います。例外は、コンストラクターで唯一の書き込みアクセスが発生する場合です。次に、フィールドを としてマークできるようにするため、最初のバージョンを好みますreadonly

于 2012-06-29T09:19:24.670 に答える
2

2 番目のバージョンでは、すっきりしませんが、柔軟性が低くなります。最初のバージョンが必要になる状況に遭遇するまでは 2 番目のバージョンを使用してから、リファクタリングすることをお勧めします。いずれにせよ、変更はクラスに対してローカルであるため、あまり心配する必要はありません。

一般に、コードの記述を減らすことは良い考えです。書くコードが少ないほど、生成されるバグも少なくなります:)

于 2012-06-29T09:14:19.630 に答える
2

とにかく、2番目のものは最初のものにほとんどコンパイルされるため、IMOは常に2番目のものを使用します。これは、コードが少なくてきれいだからです。

私が最初のアプローチを使用する傾向がある唯一のシナリオは、プロパティを遅延ロードしたい場合です。

private List<string> _items;
...

public List<string> Items
{
    get
    {
        if (_items == null)
        {
            _items = new List<string>();
            // load items
        }
        return _items;
    }
}
于 2012-06-29T09:16:58.507 に答える
1

次の質問に進んでください。それは同じように見えますが、

https://softwareengineering.stackexchange.com/questions/72495/net-properties-use-private-set-or-readonly-property

于 2012-06-29T09:15:43.383 に答える
0

個人的には 2 番目のバージョンの方が好きです。書く時間が少なくて済み、その時間をより複雑なコーディングに費やすことができるからです。また、私の意見では、遅延開発が促進されます。

于 2012-06-29T09:19:24.510 に答える
0

デバッグには 2 番目が最適です。それ以外の場合は、フィールドを設定する各場所にブレークポイントを配置する必要があります。2 つ目では、プロパティのセットに 1 つのブレークポイントを設定します。

于 2012-06-29T09:14:28.957 に答える