
No.2ベストアンサー
- 回答日時:
C#のプロパティという機能はご存知でしょうか?
get、setは、プロパティを実装する際に利用するものです。
getは値の取得、setは値の設定をするものです。
get、setの意味というよりも、プロパティの意味を知ることが大切かと思います。
○意味
プロパティとは、クラスのメンバ変数であるかのようにアクセス可能でありながら、
処理の内容を自分で記述できる機能、、、です(@ITより)。
クラスのメンバ変数をpublicにして公開した場合、どうなるでしょう?
外部から好きなようにメンバ変数の値を変更することができてしまい、
オブジェクト指向という考え方から外れてしまいますよね。
例えばエレベータは、行きたい階のボタンを押せば勝手に運んでくれます。
利用する人は、「ボタンを押す」ということだけ知っていればよく、
ボタンが押された後にどのような仕組みで動くのかを知る必要はありません。
メンバ変数をpublicにして公開するというのは、エレベータの内部構造を公開し、
ボタンではなく、内部構造を直接いじって欲しいというのに似ています。
これだとエレベータが壊れてしまったり、正しく動かなかったりするのは明白です。
前置きが長くなりました^^;
このように、内部実装は隠蔽化すべきというのは分かっていただけたでしょうか。
C#のプロパティは、メンバ変数を隠蔽化する場合に利用する機能なのです。
○使い方
あるクラスに次のようなメンバ変数があったとします。
int code;
この変数は、0~1000までの整数が入るようにしたいという要件があったとします。
public int code;
としてしまうと、外部からcode変数を好き勝手いじられてしまうので、
0~1000までの整数が入るようにしたいという要件は満たせませんし、
そもそも、上記のようにメンバ変数を公開することは推奨されません。
この時、メンバ変数をプロパティとして隠蔽化します。
private int code;
public int Code
{
get
{
return this.code;
}
set
{
if(0 <= value && value <= 1000)
this.code = value;
}
}
※スペースが上手くいれられず申し訳ありません。
#1の方の回答にある
> 代入しようとする値が正しいかどうかチェックする
は、上記ようにsetの処理でチェックを行うことが出来るということです。
利用の仕方は、TextBoxなどのコントロールを使ったことであれば分かりますよね?
長くなってしまいまして、申し訳ありません。
疑問が解消されないようでしたら、その旨をおっしゃってくださいね。
なるほど・・・例えも分かりやすく教えていただきありがとうございます。よく理解できました。
あとは、うまくクラス設計が出来るようになって、最適に使いこなせるよう頑張りたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- 英語 TOEIC公式問題集のリスニングの一部分に “I’ll get an ad in the local 2 2022/08/17 18:52
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- 英語 どのような場合に、予定や進行していない動詞を進行形にするかについて 2 2022/03/22 22:31
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- 英語 提示文の構造について 3 2022/06/27 18:03
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- 作詞・作曲 コード進行に使うCとかG/Bってなんですか? 作曲勉強を始めたばかりです。 CとかG/Bの意味がわか 4 2022/04/03 02:00
- 統計学 t検定を繰り返してはいけない理由について教えて下さい。 2 2022/05/15 12:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB初心者。小数点以下の表示で...
-
VBA ドロップダウンリストを残...
-
テキストボックスのvalueとtext...
-
setcookieで「path」に複数の値...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
Dateserialで データ抽出
-
jtableの色付け
-
Excel VBA 複数選択したリスト...
-
C#の質問です
-
PL/SQLでのTO_DATEの時間取得に...
-
リソースの値を変数で取得
-
vbscriptを使いexcelを参照して...
-
VB.netでRGB関数を使うには
-
テキストボックスで入力
-
値を返さないコード パス
-
変数に代入してある数値を表示...
-
ユーザーフォームのテキストボ...
-
(Excel) マクロによる値の貼付け
-
Powershellのparamについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
VBA ドロップダウンリストを残...
-
Excel VBAのリストボックスの値...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
VB初心者。小数点以下の表示で...
-
Excel VBA 複数選択したリスト...
-
C#の質問です
-
マクロで奇数と偶数の値を2か所...
-
変数名の取得
-
マクロ 特定のセル値のみクリ...
-
シーケンサで最小値を保持する
-
[VB.net] DataGridViewのコンボ...
-
Powershellのparamについて
-
PL/SQLでのTO_DATEの時間取得に...
-
【C++/CLI.NET】コンボボックス...
-
ユーザーフォームのテキストボ...
-
VB.NETのスクロールバーコント...
-
VB.NETでアクティブなformを知...
-
vb6のVSFlexGridで選択行、列の...
おすすめ情報