• ベストアンサー

C# get set

C#でのget setの意味、使い方を教えてください 初心者のため、調べても意味が良く分からず、またどういった場面で利用されるかも分かりません。 有識者の方、よろしくお願い致します。

  • jmine
  • お礼率38% (10/26)

質問者が選んだベストアンサー

  • ベストアンサー
回答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などのコントロールを使ったことであれば分かりますよね? 長くなってしまいまして、申し訳ありません。 疑問が解消されないようでしたら、その旨をおっしゃってくださいね。

jmine
質問者

お礼

なるほど・・・例えも分かりやすく教えていただきありがとうございます。よく理解できました。 あとは、うまくクラス設計が出来るようになって、最適に使いこなせるよう頑張りたいと思います。 ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

メンバーへのアクセスのときに「処理を横取り」できます. 例えば, setter だと「代入しようとする値が正しいかどうかチェックする」ということができますね.

関連するQ&A

  • get set upについて

    恐れ入りますが、以下についてお教えいただけないでしょうか。 He can also help you get set up in your office. (1)getと set up というふうに動詞が連続になっています。どうしてなのでしょうか? (2)helpがあるのでその後の動詞は原形をとることはわかります。その時の原形はgetと set up のどちらなのでしょうか? 色々調べましたが、わかりませんでした。 どうかご教授の程宜しくお願い致します。

  • VB.NET getとsetの概念がわかりません。

    GetとSetがどういう働き・意味をもっているのか理解できていません。 たとえばSpecialTextBoxというクラスがあったとします。 *************************************************************** Imports System.Web.UI.MobileControls Partial Class SpecialTextBox Inherits System.Web.UI.MobileControls.MobileUserControl Public Property Item() As SelectionList Get Return Me.CheckBox End Get Private Set(ByVal value As SelectionList) Me.CheckBox = value End Set End Property End Class **************************************************************** ここでのGet Setはどういう動き・働きをしているんでしょうか? わかる方がいたらご助言お願いいたします。 (サンプルソースなどがあれば理解しやすいかもしれません。。)

  • C2ステッピングの重要性

    C2ステッピングの意味を調べてみましたが、この問題は、大きな問題なのでしょうか?私には重要だと思えません。有識者の方、C2ステッピングの重要性を教えて下さい。

  • get について

    ほんとにみなさんにとって簡単なことなのですが、 get to school get home は、なんでget home のほうにはto がついてないのですか? to がつけば(場所)に着くという意味になるのではないですか? だから、get to homeが正しい回答ではないですか? よろしくお願いします。

  • GET値が消えてしまう

    どうも、Flash初心者です。 やりたい事は、ボタンをクリックした時に、 GET値をつけたURLに遷移したいのですが、 やってみると、遷移はしますが、GET値が消えてしまいます。 actionScript2.0で、以下の様に書きました。 on (release) { var firstName:String = "Gus"; var lastName:String = "Richardson"; var age:Number = 92; getURL("check_1.html", "_self", "GET"); } パブリッシュプレビューから、ボタンをクリックすると、 画面が遷移し、GET値も付いているのですが、 Flashが埋め込まれているHMTLからボタンをクリックすると、 画面は遷移しますが、GET値が付かない状態です。 HTMLに問題があるのかもしれませんが、 調べても辿り着きませんでした。 どなたか分かる方、教えてください。

    • ベストアンサー
    • Flash
  • get the bagについて

    英会話ができる方に質問です。 get the bagあるいはgive a person the bagで「(会社を)クビになる」といった意味で、 実際の英会話で使ったりしますでしょうか。 何卒よろしくお願い致します。

  • POSTとGETについて

    POSTとGETについて2点質問が御座います。 PHPは最近手を付け始めましたので、初心者です。 (1)PHPでPOSTとGET両方使うことは出来ますでしょう   か? 内容:PHPファイルからCGIに値を引きつきたいのですが、テキストエリアのフォーム(POST)とCGIのリンク先に"hogehoge.php?id=xxxx"とGETのxxxxとPOSTのテキストエリアに記載した内容を2つ引き継ぎたいのですが、GETの方の値がCGIで反映されていません。 POSTとGETの両方引きつぎたいときはどのようにすれば良いでしょうか? (2)また(1)とは、別の話ですが、GETだけで2つの情報を引き継ぐことは可能でしょうか? "hogehoge.php?id=xxxx,?id2=yyyy"のようなイメージでxxxxとyyyyの両方を渡したいと思ってます。 どうかご教授宜しくお願い致します。

    • ベストアンサー
    • PHP
  • VS C++6.0のCString にて先頭1文字しかセットされないのですが・・・

    Visual Studio C++ 6.0 にてあるサンプルPGより修正を行っているのですが (VS C++6.0初心者です) CString aaa; // と定義し aaa = _T("ABCDEFG"); //と文字列をセットしても // aaaには "A"の先頭1文字しかセットされない char bbb[20]; strcpy(bbb, "%s", aaa); // としても // bbbには "A"しかセットされません。 何か設定などでこのようになるのでしょうか? これをセットした文字列をセット、取得可能とならないものでしょうか?

  • Get_○○っどういう意味?「ExelVBA」

    初心者向けのVBAの本を読んでいるのですが、Get_の説明がなく、あるモジュールに書いてあった次の2つがわかりませんでした。 (1)「税込価格=Get_税込価格(税抜き価格)」とsubプロシージャ中に書いてあるのですが、 どういう意味でしょうか? (2) Function Get_税込価格(a As Integer)As Integer Dim 税率 As Double 税率=0.05 Get_税込価格=a*(1+税率) a=100 End Function と(1)のSubプロシージャの下に書いてあったのですが、 「Get_税込価格=a*(1+税率)」とはどういう意味でしょうか? よろしくお願いいたします。

  • get counsel

    http://leagle.com/decision/In%20CACO%2020081226034/IN%20RE%20C.A. Mother responded, "I don't want to talk until I get counsel and get some guidance. Maybe in the future." 上の counsel は『助言, 忠告』という意味で使われていますか。

専門家に質問してみよう