どこかで次のようなものを見ましたが、それが何を意味するのか疑問に思っていました。私はそれらがゲッターとセッターであることを知っていますが、文字列Typeがこのように定義されている理由を知りたいです。私を助けてくれてありがとう。
public string Type { get; set; }
それらは 自動実装プロパティ (略して自動プロパティ)です。
コンパイラは、次の簡単な実装と同等のものを自動生成します。
private string _type;
public string Type
{
get { return _type; }
set { _type = value; }
}
これは auto-property であり、これの略記法です:
private string type;
public string Type
{
get { return this.type; }
set { this.type = value; }
}
C#6の場合:
自動プロパティをフィールドとして宣言できるようになりました。
public string FirstName { get; set; } = "Ropert";
読み取り専用の自動プロパティ
public string FirstName { get;} = "Ropert";
public string Type { get; set; }
その後も同じです
private string _Type;
public string Type
{
get { return _Type; }
set { _Type = value; }
}
これは、コンパイラが実行時にバッキングフィールドを定義することを意味します。これは、自動実装プロパティの構文です。
詳細: 自動実装プロパティ
自動的にバッキングされるプロパティで、基本的に
private string type;
public string Type
{
get{ return type; }
set{ type = value; }
}
これらは自動プロパティと呼ばれます。
http://msdn.Microsoft.com/en-us/library/bb384054.aspx
機能的に(そしてコンパイルされたILに関して)、それらはバッキングフィールドを持つプロパティと同じです。
これは古い質問ですが、C#6のリリースにより、プライベートプロパティに対して次のようなことができるようになりました。
public constructor()
{
myProp = "some value";
}
public string myProp { get; }