• ベストアンサー

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はどういう動き・働きをしているんでしょうか? わかる方がいたらご助言お願いいたします。 (サンプルソースなどがあれば理解しやすいかもしれません。。)

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

getはそのインスタンスから値を取り出します。 setはそのインスタンスに値を設定します。 あなたの例だと、GetはCheckBoxの値を取り出します。 SetはCheckBoxに指定した値を設定します。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

こういう語句の意味的な疑問は、 WEB照会デモしてみたのでしょうか。例えばGoogleで「VB.NET Get SET」で照会すれば、たくさんの記事がある。最初の方の http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet09/vb6tonet09_03.html http://bbs.wankuma.com/index.cgi?mode=al2&namber=10011&KLOG=23 そんなのを読んで、なおかつその記事で、判ら無いここは、どういう意味か、ぐらいの質問にすべきでは。

関連するQ&A

  • VB.NETで出来てC#で出来ない???

    VB.NETでは出来るのにC#で同じようにするやり方がわからなくて困っています。 VSのバージョンは2008です。 やりたいことは 『param.Item("AAA") = "111"』 このように書けるクラスを作りたいのですが、 VBで出来てC#では出来ないのでしょうか? イメージとしてはプロパティにメソッドをくっつけたようなクラス? C#ではこのように書くとエラーになります。 どのようにしたらいいでしょうか? public string Item(string Key) {  set { _param[Key] = value; } } VB Dim param As New Param() param.Item("AAA") = "111" ----Paramクラス---- Imports System.Text Public Class Param Private _Hash As New Hashtable Default Public Property Item(ByVal Key As String) As String Get Return _Hash(Key) End Get Set(ByVal value As String) _Hash(Key) = value End Set End Property End Class ---------

  • VB2010 のユーザコントロールのプロパティ

    お世話になっております Windows7、VB2010 Expless で開発しております 後にVS2010のVBに移行する予定です ユーザコントロールでテキストボックスを作っております そこで、初期値を設定しようと思い設定をしたのですが反映されません Imports System.ComponentModel <DefaultValue(True)> Public Property Chk_Num() As Boolean Set(ByVal value As Boolean) If (value = True) Then blnChk_Num = value Else blnChk_Num = value End If End Set Get Return blnChk_Num End Get End Property <System.ComponentModel.DefaultValueAttribute(1)> Public Property Chk_ZenHankaku() As Integer Set(ByVal value As Integer) If (value >= 0 And value <= 2) Then '0以上2以下 blnChk_ZenHankaku = value Else 'マイナス、または3以上の場合は0にする blnChk_ZenHankaku = 0 End If End Set Get Return blnChk_ZenHankaku End Get End Property どちらの方法でも、Booleanの場合は「False」、Integerの場合は「0」になってしまいます また、初期化~プロパティ宣言間に、改行しても改行しなくても結果は同じです どうにか設定できる方法はありますでしょうか よろしくお願いします

  • DataGridViewTextBoxColumnを継承したカスタムコ

    DataGridViewTextBoxColumnを継承したカスタムコントロールにプロパティを追加したのですが、デザイナで編集保存して一旦閉じてから開き直すと初期値に戻ってしまいます。 保存したあと、form.Designer.vb ファイルをテキストエディタで開いてみると、やはり初期値(=False)が保存されているようです。 どのようにすればデザイナで設定した値を保存できるのでしょうか? ご教授いただけませんでしょうか。宜しくお願いします。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34107&forum=7 この情報などを見てみたのですが、途中からイベント処理?の話に変わっているようで違うのかな?と思いました。 開発環境は Visual Basic 2010 Express です。 以下、作ったカスタムコントロールのソースです。 Public Class DataGridViewTextBoxColumnEx Inherits System.Windows.Forms.DataGridViewTextBoxColumn Private __CalcValue As Boolean Public Property CalcValue() As Boolean Get Return Me.__CalcValue End Get Set(ByVal value As Boolean) Me.__CalcValue = value End Set End Property End Class

  • VB.NETで変数の宣言が上手くできません

    VB.NETで変数の宣言が上手くできません プロパティを使用し、変数の内容を一括保存しようと考えています その為に以下のようなコードを書いたのですが他のフォームから宣言されていないとなってしまいます 修正点を教えて頂けると嬉しいです Setting.vb Pubic class Settings Public dbdirectry As String Public flistpass As String Public Property flist () As String Get Return flistpass End Get Set (Byval Value As String) flistpass = Value End Set End Property もう一つflist () をdbdic ()に flistpassをdbdirectryにしたもの End Class この変数2つに他のフォームMainForm1.vbとDefaultSetting.vbなどからflistpass = Newflistpassなどと記述するとアクセス出来ず宣言していない扱いになります Publicでの宣言で大丈夫だと思ったのですが間違えているのでしょうか?

  • デザイナ上にも値が表示され、独自の処理も組み込みたい

    VB2005で独自の制限を持つコントロールを作ろうと思っています。 Imports System.ComponentModel Public Class Component1   Inherits TextBox   Private _text As Double   Public Overrides Property Text() As String     Get       Return _text     End Get     Set(ByVal value As String)       If IsNumeric(value) Then         _text = value       End If     End Set   End Property End Class やりたい事は数値しか入力を許さず、一定のプロパティ指定によって カンマ区切りだとか小数部表示、桁数制限などが出来るようにしたい のです。 上記のようなコードで動作は出来るようなのですが、デザイナ上の プロパティウィンドウからTextを変更した時、デザイナ上に貼り付け られているテキストボックスの中に、指定されたTextが表示されません。 MyBase.Textを利用するとText()が何度も走行してしまうようですし、 取得するときに、Textプロパティに設定されている値を加工した結果を 返したい為、MyBase.Textの利用が宜しくないようです。 (例えば表示上は「1,234」となっているが、取得時には「1234」として 取得される、 設定時に「1234」と指定したが、実際に設定される値は「1,234」など) 先のような理由の為か、Getの方に Return String.Format("{0:#,##0}", Single.Parse(MyBase.Text)) のようなことをするとInvalidOperationExceptionが発生してしまいます。 どうするとデザイナ上にも値が表示され、先のようなカスタム処理を加えることが可能でしょうか? 宜しくお願い致します。

  • MsgBoxをASP.NETで表示したいのですが・・・WEBなどで検索

    MsgBoxをASP.NETで表示したいのですが・・・WEBなどで検索した内容が理解できずに困っています。 VWD2008を使ってページを作成しています。言語はVB.NETです。 ASP.NETではメッセージボックスを使えないことを承知しています。 ただし手段によって可能ということはこのサイトで知りました。 まだ、初心者でハチャメチャなことを書いてあるかも知れませんがご教示いただけないでしょうか? http://www.atmarkit.co.jp/fdotnet/dotnettips/015confirm/confirm.html このページを参考にしてみたのですが・・・ aspx上に配置したボタンのプロパティにAttributesという項目がありません。 また、 private void Page_Load(object sender, System.EventArgs e) { // ページを初期化するユーザー コードをここに挿入します。 Button1.Attributes["onclick"] = "return confirm('本当に移動しますか?');"; はどこに書いてあげたらいいのでしょうか? よろしくお願いします。 Imports System.IO Imports System.IO.Path Imports System.Text Imports System.Web.UI.HtmlControls Imports System.Diagnostics Imports System.Xml Partial Public Class _Default Inherits System.Web.UI.Page ' ' Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click ' '

  • ユーザーコントロールに選択プロパティを出す?

    VB.NET2005のWEBユーザーコントロールでプロパティを作り、それをコントロールを配置したときのプロパティウィンドウから選択させたいのですが、書籍やネット等を調べてもわかりませんでした。。。現状のソースは Public Property TEST() As String Get Return "" End Get Set(ByVal value As String) if value = 1 then me.close end if End Set End Property です。 これでプロパティウィンドウにTESTという項目はでますが、値を入力しないといけません。よくあるBackColorのプロパティのようにリストから選択できるようにしたいのですがどうしたらいいでしょうか? それともカスタムコントロールでないとできないのでしょうか?

  • プロパティープロシージャーについて

    簡単な年齢計算プログラムです。 書籍のサンプルなのでうまく動いています。 クラスの変数がPrivate strnameだったりするので そこへアクセスするためにプロパティプロシージャーを使っているというところまでは 判ったような気がしますが、 getとsetの関係がわかりません。 まず、 1.何をGetしているのか 2.なぜGetが先に来るのか、 3.Setの前にGetのReturnで返してますが実態は何を返しているのでしょうか?普通に考えると逆のような気がします。 根本がわかっていないのだと思いますが、どなたかお教え願います。 呼ぶ方 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim person As New Class1() person.Name = TextBox1.Text person.Birthday = DateTimePicker1.Value.Date MessageBox.Show(person.Name & "さんの年齢は" & person.GetAge()) End Sub クラスの方。 Public Class Class1 Private strname As String Private datBirthday As Date Public Property Name() As String Get Return strname End Get Set(ByVal pro_name As String) strname = pro_name End Set End Property Public Property Birthday() As Date Get Return datBirthday End Get Set(ByVal pro_birthday As Date) datBirthday = pro_birthday End Set End Property Public Function GetAge() As Integer Return Int(DateTime.Today.Subtract(Birthday).Days / 365.25) End Function End Class

  • ユーザーコントロールについて

    プロパティを作成し初期値の設定を行いたいのですが、 なかなか思うようにいきません。 Private mDblMaxValue As Double <System.ComponentModel.DefaultValue(99999999)> Public Property MaxValue() As Double Get Return mDblMaxValue End Get Set(ByVal Value As Double) mDblMaxValue = Value End Set End Property デザイン時に99999999を初期値として設定したいのですが…なぜか0になってしまいます。 助けてください。お願いいたします。

  • Form間のデータ渡しについて

    申し訳ありません。VB.NET初心者です。 Form1から、ボタンAをクリックするとForm2がオープンします。 Form1から、ボタンBをクリックするとForm3がオープンします。 Form1では、Form2またはForm3で設定した値をそれぞれ演算に使おうとしています。 MicrosoftのHPからパクってForm1 - Form2間のデータの引渡しを行うことはできたの ですが、新規でForm3を作成して、Form1 - Form3間のデータの引渡しを行おうとする とForm3の立ち上がり時に "NullReferenceException はハンドルされませんでした"となり、 困ってしまいました。 使われている方から見ると簡単かもしれず 申し訳ありませんが、どなたか教えていただけないでしょうか。 ==================== Form1.vb ======================= Form1には、Label1、Label2、Button1、Button2があります。 Public Class Form1 Inherits System.Windows.Forms.Form Private m_form2 As Form2 Private m_form3 As Form3 Public Property LabelText() As String Get Return Label1.Text End Get Set(ByVal Value As String) Label1.Text = Value End Set End Property Public Property LabelText2() As String Get Return Label2.Text End Get Set(ByVal Value As String) Label2.Text = Value End Set End Property Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ScaleYokusou.Click m_form2 = New Form2(Me) m_form2.ShowDialog() m_form2.Dispose() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ScaleHikito.Click m_form3 = New Form3() m_form3.ShowDialog() m_form3.Dispose() End Sub End Class ==================== Form2.vb ======================= Form2には、TextBox1、Button1があります。 Public Class Form2 Inherits System.Windows.Forms.Form Private m_form1 As Form1 Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If m_form1 Is Nothing = False Then m_form1.LabelText = Me.TextBox1.Text End If End Sub Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If m_form1 Is Nothing = False Then Me.TextBox1.Text = m_form1.LabelText End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub End Class ==================== Form3.vb ======================= Form3には、TextBox1、Button1があります。 Public Class Form3 Inherits System.Windows.Forms.Form Private m_form1 As Form1 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If m_form1 Is Nothing = False Then m_form1.LabelText2 = Me.TextBox1.Text End If End Sub Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.TextBox1.Text = m_form1.LabelText2 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub End Class