C#をつつく12ープロパティ。入力値を信じるな!。2008-06-18 Wed 14:18
こんピヨー(こんにちは)。
今回はC#でカプセル化を実現する
為の機能であるプロパティの実装をつついてみよう。
プロパティのありがたみを知るには、やっぱりプロパティ無い状態を見るのが一番。
さっそくプロパティが無い時を見てみよう。
ドリィちゃんそこまで年齢を誤魔化さなくても・・・ インドリィちゃん「女性の年齢を聞くな!」 こんな具合にフィールドを直接扱えるようにしてしまったら入力値の妥当性をチェックできない んだ。では入力値をチェックするために値の設定にメソッドを設定してみよう、
これで年齢にマイナス値を入力したら、その罰として前の人の年齢が表示されるようになるよ。 インドリィちゃん「この屈辱忘れるものかぁぁ」 ビック!ちょっと後がまずいことになるかも・・・それはさておき、フィールドを保護するために一々Set○○、Get○○って 名前のメソッドを作るのは面倒だし見栄えが悪いよね。だからC#にはもっといい方法が用意されているんだ。早速見てみよう。
この構文がプロパティなんだ。この構文を詳しく突付いてみよう。 まずは始めのプロパティの宣言は・・・ public int Age { プログラム } プロパティが見える範囲、 ってなっている。これはプロパティの型、 プロパティの名前の三つを指定しているんだ。 プロパティが見える範囲については色々あるから説明は後回しで、型と名前を考えてみよう。 型と名前はもうお馴染だよね?考え方はフィールド(変数)と変わらないピヨ。 プロパティとフィールドの違いは、 get { プログラム }と
set { プログラム }
があるところなんだ。getはプロパティの値を取得する部分で、setはプロパティの値を設定する部分なんだ。 setの部分だけ注意が必要でvalueという特別な変数があるんだ。 これは今代入しようとしている値なんだ。 これは余談なんだけど実はプロパティは全てのオブジェクト指向言語に実装されているわけではないんだ。 それは何故かというと、メソッドでも実現できるから「メソッドで同じことが出来るからいいじゃん」という人がいるからなんだ。 だけどボク個人の意見としてはリフレクションを有効に使うためにはプロパティとメソッドを明確に分けたほうが良いと思うピヨ。 余談おしまい。この記事もおしまい。 |
この記事のコメント |
コメントの投稿 |
||
|
|
||
| 管理者だけに閲覧 | ||
|
|
||
この記事のトラックバック |
|
| 無差別に技術をついばむ鳥 |
|