プロパティとは?プロパティの使用例(C#)

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
ヘテムル は大型サイトの作成に向いています~

プロパティとは

プロパティは、クラスの外部からフィールドにアクセスするときの窓口になります。

そのため、プロパティとフィールドはセットで使われることが多いです。

プロパティの基本形

プロパティの最も基本的な書き方は以下のようになります。

アクセス修飾子 データ型 プロパティ名
{
  get { returnフィールド; }
  set { フィールド= value; }
}

プロパティは、getアクセサーsetアクセサーという2つのサクセサーから構成されています。

プロパティの値を知りたいときに、getアクセサーが呼び出されます。

逆に、プロパティに値を設定するときに、setアクセサーが呼び出されます。

※プロパティを使用する側から見ると、あたかも、プロパティに値が代入されているように見えます。しかし、プロパティを定義しても、値を記憶する領域は確保されません。実際の値は、setアクセサーを通してフィールドに格納されています。

※setアクセサーのvalueという引数を通じて、ユーザーの入力した値をやり取りします。

ソースコード

実行結果

年齢は10

もしも、プロパティがなかったら?

フィールドの値をクラスの外部から自由にアクセスして欲しくないことがあります。

そのような場合、普通ならプロパティを使います。

もしも、プロパティという概念を持ち出さずに、フィールドの値を管理したいという状況を考えます。

これを解決するには、メソッドでやり取りすることが考えられます。

しかし、メソッドでプロパティと同じ機能を実現するには、以下の点がネックになります。

・値を書き込む用(set)と値を読み取る用(get)の2つメソッドを用意しないといけない。
・クラスを使う側が、フィールドに直接値を入れるような感覚で扱えない(メソッドであることを意識してしまう)

ソースコード

実行結果

年齢は10

SetAgeメソッドとGetAgeメソッドの2つのメソッドが必要です。

プロパティの応用例

ここで、一番最初のソースコードを見返してみましょう。

よくよく考えたら、わざわざプロパティを書く必要がないのではないかと思われた方がいるかもしれません。

たしかにそうです。

以下のソースコードは、お好きに_ageにアクセスしてくださいと言っているようなものです。

private int _age;
public int Age {
  get { return _age; }
  set { _age = value; }
}

そのため、プロパティを使わず、次のようにフィールドのみ使って書いても同じ働きをします。

public int Age;

もう少し、プロパティのありがたみのわかる例を考えましょう。

プロパティが真価を発揮するのは、何らかの形でアクセスを制限したい場合やフィールドに入る値を制御したい場合です。

ここでは、_ageの値に、負の値が入いりそうな場合、警告を出して、0に置き換えるようなコードを考えましょう。

ソースコード

実行結果

年齢は10
値が不正です
年齢は0

Unityコースやアプリコースあり。無料体験の申込みあり。
  • このエントリーをはてなブックマークに追加

スポンサーリンク

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)