web-dev-qa-db-ja.com

c#:ゲッター/セッター

どこかで次のようなものを見ましたが、それが何を意味するのか疑問に思っていました。私はそれらがゲッターとセッターであることを知っていますが、文字列Typeがこのように定義されている理由を知りたいです。私を助けてくれてありがとう。

public string Type { get; set; }
88
Maya

それらは 自動実装プロパティ (略して自動プロパティ)です。

コンパイラは、次の簡単な実装と同等のものを自動生成します。

private string _type;

public string Type
{
    get { return _type; }
    set { _type = value; }
}
148
Justin Niessner

これは auto-property であり、これの略記法です:

private string type;
public string Type
{
  get { return this.type; }
  set { this.type = value; }
}
29
Teoman Soygul

C#6の場合:

自動プロパティをフィールドとして宣言できるようになりました。

public string FirstName { get; set; } = "Ropert";

読み取り専用の自動プロパティ

public string FirstName { get;} = "Ropert";
22
M.Hassan
public string Type { get; set; } 

その後も同じです

private string _Type;

public string Type
{    
get { return _Type; }
set { _Type = value; }
}
13
Security Hound

これは、コンパイラが実行時にバッキングフィールドを定義することを意味します。これは、自動実装プロパティの構文です。

詳細: 自動実装プロパティ

8
Maverik

自動的にバッキングされるプロパティで、基本的に

private string type;
public string Type
{
   get{ return type; }
   set{ type = value; }
}
5
Jamiec

これらは自動プロパティと呼ばれます。

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

機能的に(そしてコンパイルされたILに関して)、それらはバッキングフィールドを持つプロパティと同じです。

4
Jeff

これは古い質問ですが、C#6のリリースにより、プライベートプロパティに対して次のようなことができるようになりました。

public constructor()
{
   myProp = "some value";
}

public string myProp { get; }
1
Anonymous