2

重複の可能性:
パブリック フィールドと自動プロパティ

これはどこかで答えられると思いましたが、いつもの場所では見つかりません。私は疑問に思っていました、これを行うことの利点は何ですか

private int _foo;
public int foo {get {return _foo;} set{_foo = value;}}

また

public int foo {get; set;}

ちょうど

public int foo;

より複雑な操作が必要な場合の利点はわかりますが、このような単純なケースの利点は何ですか?

4

6 に答える 6

3

この質問はここで何度も聞かれました。これらの場合の明確な利益の証拠はありません(プロパティ内にロジックはありません)。さらに言えば、フィールドを使用すると、最小限の(ナノ)速度の利点が得られますが、99.99%の場合には関係ありません。

MSによって定義されたガイドラインは、コードの拡張性と保守性のために、を使用することを提案propertiesしています。したがって、そのガイドラインに従うことで、コードに精通していない人でもコードを読みやすくなります。

于 2012-11-09T08:53:06.913 に答える
2

この問題については、この Jon Skeet チュートリアルまたは関数の代わりにプロパティを使用する場合を参照してください。このトピックに関する 10 億の関連する質問とリソースもあり、Google/SE の検索で公開されます。

これが役立つことを願っています。

于 2012-11-09T08:55:20.863 に答える
1

私によると、「get-set」を使用するとプロパティが提供されます。基本的に、変数に get-set プロパティを提供しながら、カプセル化の概念を実装しています。

于 2012-11-09T09:09:46.043 に答える
1

クラスにデータを格納するパブリック変数があるとします。ただし、データの検証を行う必要がある場合、クラスのパブリック変数では行うことができません。あなたはそれらを制御できないからです。部外者、他のプログラマー、プロジェクトにアクセスする人は誰でも、クラス内のこれらのパブリック変数を編集できます。

主に、クラス内のデータへのアクセスを制御するために、プロパティを使用します。それらは依然として変数ですが、クラスの権限内にあります。これらの変数は、任意のデータ型 (例: String、Int、Bool、Objects など) から取得できます。

プロパティは、プロパティで何をどのように達成したいかに基づいて、3 つの主要なオプションを使用して実装できます。

Get - access to the property and retrieve its value
Let - access to the property and update its value
Set - access to the property and used with objects 

Get/Set メソッドの実際の使用法を理解することが重要です。私はティガランのコメントに同意します。

誰かが私を落胆させようとしているなら、その理由を知りたいです!

于 2012-11-09T09:25:10.793 に答える
0

あなた自身の質問に答えたと思います。

このような単純なケースでは、本当の利点はありません。自動 get/set メソッドは、省略形のプロパティを使用して作成されます。

public int Foo { get; set; }

変換が必要なより複雑な例では、明示的な get および set メソッドを使用して柔軟に変更できます。

于 2012-11-09T08:54:27.387 に答える