これまで、メソッド、クラス、インスタンス、カプセル化などを順に紹介してきました。今回は、カプセル化の便利機能として、プロパティを紹介させていただきます。
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
前回はカプセル化の中でprivateの変数に値を入れる際に、アクセサというメソッドを2つ準備して処理を行いました。しかし、プログラムが冗長的になって読みづらくなってしまいます。
そこで、今回はプロパティという仕組みを利用して前回のプログラムを簡素に書く方法を紹介させていただきます。
プロパティとは
プロパティとは、特殊なメソッドで、カプセル化した値への代入を簡素に記述することが可能です。普段プログラムを見ていてSet~Get~という記述を見つけたら、プロパティのことで、Setで値を受け取り、Getで値を返しています。
基本的なプロパティの書き方
それでは、実際にどのように書くのかご紹介いたします。
基本構文はこのようにプロパティ名の中にSetとGetを入れ、呼び出し先のプログラム(privateの変数がある方)に処理を書き込みます。
プロパティを使わない書き方(呼び出し先クラス)
こちらは、前回の記事でご紹介した、カプセル化した変数に値を代入する方法です。SetHPとGetHpの二つのメソッドを準備しています。SetHPではマイナスの値が入らないようにif文で条件を付けてセットしています。
プロパティを使った書き方(呼び出し先クラス)
一方で、先ほどの構文通りプロパティを使った方法はこちらです。基本的に、プロパティ名は頭文字を大文字にするため、Hpと設定しました。
プロパティを使わない書き方(呼び出し元クラス)
呼び出し元のMainクラスでは、GetHpメソッドとSetHpメソッドを利用して値を操作しています。具体的には、初期値を200としそこから-150した値が結果として表示されます。
プロパティを使った書き方(呼び出し元クラス)
一方で、プロパティを利用した場合のMainクラスです。随分と簡素になりましたね!前回は、NewHpに減った体力を代入する形をとっていましたが、プロパティとして設定したHpを変数のように使うことができました。
自動実装プロパティ
実は、C# 3.0 以降ではさらに簡素化した自動実装プロパティという機能が導入されています。ただ、自動実装プロパティはプロパティの中に特別な条件が入る場合には利用できません。
従って、これまでの例のようにSetの中でIf文を使う、ということは自動実装プロパティが利用できないので、ご注意ください、、
自動実装プロパティが利用できる例
自動実装プロパティの書き方
では早速、自動実装プロパティの書き方をご紹介します。
アクセス識別子は省略できますのでこのように書き換えられます。
自動実装プロパティが利用できる例と比較すると、かなり簡素になりました!
前回の例を書き換えるとこのようになります。
呼び出し元のプログラムは引数が渡せないようなので、このように書き変えました。
これで実行すると、"現在の体力は50"と表示されます。
ひとこと
プログラムを開発するとき、可読性を上げることが大切だと思いますが、より簡素に書くことも重要なポイントだと思います。自動実装プロパティがC# 3.0以降で利用できるようになったように、同じ処理でも書き方が簡素になっていくこともありますので、これからもアンテナを張っていく必要があると感じました。
今回の説明は「確かな力が身につくC# 「超」入門」を参考にさせていただきましたが(例題はオリジナルです)、「もっと前から読んでおきたかった!」と痛感しています、、。もし、C#について学び始めたという方は是非参考にしてみてください!(2020年7月に出版された新書です(^^)
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
更に力を伸ばしたい方は、プログラミングの無料体験もお勧めです!
☆その他C#の記事をアップしています☆