
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
C#でほかのファイルにある自作クラスを使用したい場合
その他(プログラミング・Web制作)
-
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
4
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
5
C#「オブジェクト参照が必要です」(初心者)
その他(プログラミング・Web制作)
-
6
SQL文で素早くNULLを除外する方法
SQL Server
-
7
c#でcsvから指定の1行だけを読み込む方法
C言語・C++・C#
-
8
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
9
C# コードビハインドについて
C言語・C++・C#
-
10
C# 演算 最大値 最小値 表現の仕方
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
値を返さないコード パス
-
5
[VBA]選択範囲の下から上に処理...
-
6
ASPの変数の値をJAVA Script内...
-
7
vb6のVSFlexGridで選択行、列の...
-
8
マクロ 特定のセル値のみクリ...
-
9
VB2008 iniファイルの指定セク...
-
10
VBのデータの記録の仕方を教え...
-
11
マイコンプログラムでGPS距...
-
12
VB.NETでコンボボックスの1行目...
-
13
変数名の取得
-
14
【C++/CLI.NET】コンボボックス...
-
15
チェックした値を取得したい(C...
-
16
変数が勝手に変わります
-
17
C言語では0は・・・
-
18
FlexGridで複数選択したセル、...
-
19
vbscriptを使いexcelを参照して...
-
20
ExcelでGaussian fittingをした...
おすすめ情報
公式facebook
公式twitter