• ベストアンサー

Property Letについて

TAGOSAKU7の回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

おおーレスがあったのですねー 気が付きませんでしたー _(..)_ごめんなさい。。。 MSDNのサンプルを見てくれたのですねー そしたら次の段階を説明します。 まず前提に・・・ Private Type RECT   Left As Long   Top As Long   Right As Long   Bottom As Long End Type これの意味はわかりますか? 構造体ですね。 これを宣言してると Dim workRect As RECT RECT構造をもったworkRect変数 として、プログラム内で宣言することができます。 ユーザーコントロール、クラスファイルは変数ではありません。 ユーザーコントロールはオブジェクトであり クラスファイルはクラスとして使用します。 ちょっと難しいかも知れませんが、変数以外のものとして捕らえてください。 コントロールの一つにテキストボックスがありますよね? あれにも属性があります。 Aiignment Appearance BackColor Text などです。 これらはテキストボックスの属性(プロパティ)を表したり、値をセットすることができます。 それが Property [Get][Set/Let]です。 イメージとしては Private Type TextBox   Aiignment As Long   Appearance As Long   BackColor As Long   Text As String End Type こんな感じでしょうか? しかしTextBoxは変数の構造ではなく、オブジェクトの構造ですので、こういう書き方ではダメなのです。 そこで値を取得する時は Property [Get] 値をセットする時は Property [Set/Let] を使用した内部構造を作成しなければなりません。 大まかに言うと、変数でいう構造体みたいなものです。(大まか過ぎるかな?) 少しつかめました? 疑問があったらレスください。

saruno
質問者

補足

ありがとうございます。 だんだん理解が進んできました。 もう少し聞きたいのですが、 Getは代入と同じニュアンスでとらえてよろしいのですか? Set/Letに関してもオブジェクト変数に値をセットする感覚でしょうか? しつこくてすみませんが、宜しくお願い致します。

関連するQ&A

  • Property Let Property Get について

    こんにちは。 <Class1> Private myData(10) as String というクラスがあります。 Property Let とProperty Get を使って myData()の任意の位置のデータを Let/Get したいのですが どうやったら出来ますか? 教えてください。 よろしくお願いします。

  • 「ByRef」のヘルプが見たい

    「ByRef」の意味が分からないので、「ByRef」にカーソルをあてて、F1を押したら、 ------------------------------------ ByRef キーワード キーワード ByRef は、次の構文で使用します。 Call ステートメント Declare ステートメント Function ステートメント Property Get ステートメント Property Let ステートメント Property Set ステートメント Sub ステートメント ------------------------------------ と出て、ByRefの説明は見れないのですが、 どうやったらヘルプでByRefの説明を見る事が出来ますか? WEBじゃなくて、オフィスのヘルプで見る方法を教えてください。

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

    簡単な年齢計算プログラムです。 書籍のサンプルなのでうまく動いています。 クラスの変数が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

  • プロパティについて

    長年他の言語をやってきまして、VB.NETでピンと来ていない点があります。どなたかご教授ください。 あるクラスのプロパティとセッターゲッターについて2通りの 書き方ができると思っています。 以下の1、2の違いはありますでしょうか?入門書やネット上を検索 すると1の例で記述されますが、経験上2のような書き方をしてしまうため気になっております。 1. Private _hoge As Integer = 0 Public Property Hoge() As Integer  Get   Return _hoge  End Get  Set(ByVal Value)   _hoge = Value  End Set End Property 2. Private _hoge As Integer = 0 Public Function getHoge() As Integer  Return _hoge End Function Public Sub setHoge(ByVal val As Integr)  _hoge = val End Sub

  • VBA プロパティについて

    仕事で必用になり、プログラミングを学んでいる者です。 VBAでの基本的なことですが、教えていただきたいことがあります。 例えば・・・ Cells(i, j).value = "あああ" のようなステートメントがあったとき Cells(i, j) の部分をオブジェクト .value の部分をプロパティと考えていいですか? もしそうだとすると、 Cells(i, j).Interior.ColorIndex = i のようなステートメントは Cells(i, j) オブジェクト .Interior プロパティ .ColorIndex プロパティのプロパティ?? ということになるのでしょうか? ちょっと概念が整理できていません。 よろしくお願い致します。

  • C#でインターフェースのプロパティのアクセス修飾子

    お世話になります。 C#でインターフェースに定義した抽象プロパティで、アクセシビリティまで設定したいです。 例として抽象プロパティHelloのgetをpublic、setをinternalに設定したい場合、次の様に書くと怒られます。 string Hello { get; internal set; } ←"アクセシビリティ修飾子をインターフェイスのアクセサーで使用することはできません。" 抽象プロパティにsetを定義せず、サブクラスでinternalを設定して実装する分には怒られませんが、 この場合はサブクラスに対してsetの実装を強制できませんし、 当然API(インターフェース)型変数からsetの実装を呼び出せません。 全てのクラスはAPIからのみ利用させたいと考えていて、 かつプロパティのset、getで設定したいアクセス修飾子が異なる様な場合、 プロパティを使用せず自前でアクセッサを作るしか無いのでしょうか? 何かおいしい逃げ方がありましたらご教示いただけるとありがたいです。 宜しくお願いします。

  • cellsプロパティ列名をアルファベットに変える

    ●質問の主旨 cellsプロパティで表された列名をアルファベットに 変えるためにはどのようなコードを使えばよいでしょうか? 例)cells(4,5)→E列 ●質問の補足 cellsプロパティで取り出された行数を Rangeプロパティを表したいと考えております。 上記の例を使うと、 Range("cells(4,5)→E列 & 4")というプロパティを作成し、 Setステートメントを使用した「Rangeオブジェクト」に したいと考えております。 ご存知のかたご教示よろしくお願い申し上げます

  • プロパティのアクセス修飾子

    オート・インプリメント・プロパティで、 Property Prop2 As String = "Empty" と書いた場合の、Propertyのアクセス修飾子はPublicになるのでしょうか? あるVBの記述で、 Private CurrentValue As Integer Private Property Current As Integer Get Return CurrentValue End Get Set(ByVal value As Integer) CurrentValue = value    その他諸々の記述   End Set End Property というのがあるのですが、外部から、 Current += 1 などのようにアクセスしています。 この場合、Property Current As Integer のアクセス修飾子がPrivateになっているのですが、 Public とした場合と何が違うのでしょうか? ちなみに両方でやってみましたが、動作は変わりませんでした。 御経験のある方、御教示願えたらと思います。

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

    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のプロパティのようにリストから選択できるようにしたいのですがどうしたらいいでしょうか? それともカスタムコントロールでないとできないのでしょうか?

  • 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」になってしまいます また、初期化~プロパティ宣言間に、改行しても改行しなくても結果は同じです どうにか設定できる方法はありますでしょうか よろしくお願いします