1. ホーム
  2. c#

C#のプロパティは実はメソッドなのか?

2023-08-13 21:56:29

質問

今まで、私は以下のような印象を抱いていました。 Properties &です。 Methods はC#では2つの異なるものです。と思っていたら、下のようなことをやっていました。

これは私にとって「目からうろこ」でした。私は1つのプロパティを期待していました stringProp と、1つのメソッド stringProp を追加しましたが、代わりにこうなりました。

なぜこのようなことが起こったのでしょうか?誰か説明してください。

どのように解決するのですか?

はい、コンパイラはプロパティに対して一組の get と set メソッドを生成し、さらに自動実装されたプロパティに対してプライベートなバッキングフィールドを生成します。

public int Age {get; set;}

が相当するようになる。

private int <Age>k__BackingField;

public int get_Age()
{
     return <Age>k__BackingField;
}

public void set_Age(int age)
{
    <Age>k__BackingField = age;
}

あなたのプロパティにアクセスするコードは、これら2つのメソッドのいずれかを呼び出すようにコンパイルされます。これはまさに、パブリックフィールドをパブリックプロパティに変更することが破格の変更である理由の1つです。

Jon Skeetの なぜプロパティが重要なのか .