投稿日 | : 2007/02/17(Sat) 14:01 |
投稿者 | : らんでぃ |
Eメール | : |
URL | : |
タイトル | : Re^2: プロパティの参照渡しで値が変更されない |
魔界の仮面弁士さん、こんにちは。
早速の回答ありがとうございます。
Text1.Textは「式」になるのですね。
VB6.0の値渡しや参照渡し等の基本的な言語仕様が思い出せなくて、いろいろ実験ソースを作成して試していたのですが、さらに謎が深まって悩んでいたところでした。
> > 下のソースでText1.Textが"かきくけこ"に変ってくれないのは仕様でしたっけ?
>
> ByRef 引数にプロパティ・メソッド・関数・リテラル等の「式」を渡した場合には、
> 内部で一時的な変数が作られ、その一時変数が書き変えられるだけなので、
> 実質上、ByVal 相当の動作となります。
>
> ByRef で内容が書き変わるのは、渡したデータが「変数」であった場合だけです。
> Dim s As String
> Call func(s)
> Text1.Text = s
> のようにすれば、反映させる事ができるでしょう。
> # ただしこのようなケースでは、参照型引数を使うのではなく、戻り値で処理するべきです。
>
>
> ついでに、ByVal / ByRef に引数にオブジェクト(例:TextBox)を渡した場合の動作について、
> 下記も読んでおかれるとよいでしょう。
> http://support.microsoft.com/kb/161308/ja