意味 - C# の自動プロパティとその目的は何ですか。




get set c# (4)

誰かがC#での自動プロパティ、その目的、およびいくつかの例を簡単に説明できますか? 素人の言葉で物事を保つようにしてください!

https://code.i-harness.com


http://msdn.microsoft.com/en-us/library/bb384054.aspx

C#3.0以降では、自動実装されたプロパティは、プロパティアクセサーで追加のロジックが不要な場合に、プロパティ宣言をより簡潔にします。 また、クライアントコードでオブジェクトを作成することもできます。
プロパティを宣言すると、コンパイラはプロパティのgetおよびsetアクセサを使用してのみアクセスできるプライベートの匿名のバッキングフィールドを作成します。

class Person
{
       public string Name { get; set; }
}

編集:少し拡張すると、クラス内にプライベート変数を持たせるのがより簡単になりますが、それらをクラス外に見えるようにします(変更することはできません)

ああ、自動プロパティのもう1つの利点は、 それらをインターフェイスで使用できることです! (どのような種類のメンバ変数も許可しない)

通常のプロパティでは、次のようなことができます。

private string example;
public string Example 
{
    get { return example; }
    set { example = value; }
}

自動プロパティを使用すると、何かを本当に簡潔に作成できます。

public string Example { get; set; }

クラス内でのみ設定可能なフィールドを作成する場合は、次のようにします。

public string Example { get; private set; }

これは次のようになります。

private string example;
public string Example 
{
    get { return example; }
    private set { example = value; }
}

またはJavaで:

private String example;

public String getExample() {
    return example;
}

public void setExample(String value) {
    example = value;
}

編集:@Payaはまた私に警告した:


プロパティまたは自動プロパティを使用する理由を尋ねる場合は、これがその背後にあるデザインの考え方です。

重要な設計原則の1つは、フィールドをパブリックとして公開するのではなく、常にプロパティを介してすべてにアクセスすることです。 これは、フィールドにいつアクセスするのか、さらに重要なのは設定されているかを決して知ることができないからです。 さて、多くの場合、値の設定や取得(たとえば、範囲チェック)の際に処理が必要となることはありません。 これが自動プロパティが作成された理由です。 それらは、プロパティを作成するシンプルな、一行の方法です。 そのためのバッキングストアは、コンパイラによって作成されます。

これが私の内部プログラムでもやっているのですが、一般向けに設計されたもの(販売、オープンソースなど)にとってはおそらくもっと重要です。 自動プロパティを使用し、後でset内で何か他のことを行う必要があると判断した場合や、 getする場合は、パブリックインターフェイスを破ることなく簡単にコードを変更できます。


以前のバージョンのC#では、プロパティを使用するために、値を保持するフィールド(バッキングストアと呼ばれる)を作成する必要がありました。

private string _something;
public string Prop { get { return _something; } }

C#3.0以降、この要件は必要なくなり、コンパイラによって自動的にバッキングストアが作成されるため、_somethingフィールドを宣言する必要はありません。

この問題については、ここをクリックしてhttp://msdn.microsoft.com/en-us/library/bb384054.aspx : http://msdn.microsoft.com/en-us/library/bb384054.aspx

お役に立てれば。







automatic-properties