プロパティのゲッターメソッドとして使用されます
MSDNから
プロパティは、フィールドとメソッドの両方の側面を組み合わせたものです。オブジェクトのユーザーには、プロパティはフィールドのように見えます。プロパティにアクセスするには、同じ構文が必要です。クラスの実装者にとって、プロパティは1つまたは2つのコードブロックであり、getアクセサーおよび/またはsetアクセサーを表します。getアクセサーのコードブロックは、プロパティが読み取られるときに実行されます。プロパティに新しい値が割り当てられると、setアクセサーのコードブロックが実行されます。アクセサが設定されていないプロパティは、読み取り専用と見なされます。getアクセサーのないプロパティは、書き込み専用と見なされます。両方のアクセサーを持つプロパティは読み取り/書き込みです。
フィールドとは異なり、プロパティは変数として分類されません。したがって、プロパティをref(C#リファレンス)またはout(C#リファレンス)パラメーターとして渡すことはできません。
セットアクセサー
setアクセサーは、戻りタイプがvoidであるメソッドに似ています。これは、valueと呼ばれる暗黙のパラメーターを使用します。このパラメーターのタイプは、プロパティのタイプです。次の例では、setアクセサーがValueプロパティに追加されています。
**When you assign a value to the property, the set accessor is invoked by using an argument that provides the new value**
たとえば、このクラスを考えてみましょう
class DemoClass
{
private int value;
public Int32 Value
{
get
{
return value;
}
set
{
this.value = value;
}
}
}
リフレクターでコンパイルされたアセンブリを見ると、uは次のように気付くでしょう。
.class private auto ansi beforefieldinit DemoClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
L_0000: ldarg.0
L_0001: call instance void [mscorlib]System.Object::.ctor()
L_0006: ret
}
.property instance int32 Value
{
.get instance int32 ConsoleApplication1.DemoClass::get_Value()
.set instance void ConsoleApplication1.DemoClass::set_Value(int32)
}
.field private int32 value
}