掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オブジェクトを引数にするときのByVal, ByRefについて (ID:141691)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>(間違っていたら指摘ください。) 合っていますよ。 > しかし、引数がオブジェクト(例えばテキストボックスのようなコントロール)の場合、 > ByVal, ByRefとではどのように振る舞いが異なるのでしょうか? 変更という点について言えば、コントロールでも一緒です。たとえば、 Dim T As TextBox = Me.TextBox1 のような変数 T があったとして、それを ByRef な Sub Foo( ByRef X As TextBox ) X = Me.TextBox2 End Sub に渡したとしたら、処理の実行後、呼び出し元の変数 T が指し示すものは、 TextBox1 から TextBox2 へと変化します。 これが ByVal であったなら、変数 T は TextBox1 のままです。 > 例えば引数のコントロールの各プロパティの変更・各メソッドの実行 変数そのものの差し替えでは無く、渡されたオブジェクトのメンバを 操作するという事ですね。その場合の動作は、その引数のデータ型が 参照型(クラス)なのか、値型(構造体)なのかによって異なります。 値型の場合、そのメンバを操作しても、呼び出し元の変数には 影響を与えません。参照型の場合は、呼び出し元にも影響を与えます。 別の掲示板ですが、値型と参照型の動作の違いを、下記スレッド 12 番で 解説しています。概念的な説明の仕方なので、実際の動作を試してからで ないと、意味が伝わりにくいかもしれませんけれども。 http://rucio.bbs.coocan.jp/?m=listthread&t_id=120
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.