C# 入門

ホーム > C# の基礎 > 自動実装プロパティの仕組み

自動実装プロパティの仕組み

C# 3.0 以降では自動実装プロパティ (auto-implemented properties) が導入されました。

それについては「自動実装プロパティ」で説明しました。

とても便利な機能です。

便利はいいのですが、どこにデータが保存されるのかわからなくて、気持ち悪い、という風に感じられる方もいらっしゃるのではないでしょうか。

ここではそうした疑問に答えるべく、自動実装プロパティを用いた場合、内部でどのようにプロパティが実装されるのか確認しましょう。

自動的にフィールドが作成される

ひとことでいうと、自動実装プロパティを用いた場合、自動的にバッキングフィールドが作成されます

自動実装プロパティ」に書いた Person クラスを例にとると、 Person クラス内にはプライベートのバッキングフィールドが二つ作成されて、プロパティ(メソッド)を通して、それらに値をセットしたり、 値を取得できたりできるようになります。

ためしに ILDasm で Person クラスを見ると、次のようにフィールドが作成されていることが確認できます。

自動実装プロパティ

読み取り専用とした場合は、プロパティが private 指定となる

また、private を付けてプロパティを読み取り専用とした場合は、いったいどのようになるのでしょうか。

こちらも ILDasm でコードを覗くと分かります。

読み取り、書き込み可能な場合は次のように、set メソッドが public 指定されています。

自動実装プロパティ

しかし、private をつけると、set メソッドが private 指定となります。

自動実装プロパティ

このため書き込み用のメソッドである set メソッドに外部からアクセスすることができないので、自動実装プロパティが読み取り専用となるわけです。

ホーム > C# の基礎 > 自動実装プロパティの仕組み