ティムは、あなたが直接尋ねたが、心に留めておくべき何か他のものが何であるかをカバーしているユーザー定義のクラスのような任意の参照型変数、でも値渡しであれば、そのインスタンスのプロパティなどを変更することができます。ただし、オブジェクト全体を変更することはできません。それはMSDNから参照することにより
Public Sub (Something As WhateverClass)
Something = New WhateverClass 'will result in no changes when outside this method
Something.Property1 = "Test" 'will result in an updated property when outside this method
End Sub
をデフォルトすることがあなたに見えた理由かもしれ:
参照型の値が別の場所にメモリ内のデータへのポインタです。 これは、参照型を値で渡すと、 プロシージャー・コードは、基礎となる要素自体にアクセスできないにもかかわらず、基礎となる要素のデータへのポインター( )を持つことを意味します。 の例では、要素が配列変数の場合、プロシージャコードは に変数自体にアクセスすることはありませんが、配列 のメンバーにアクセスできます。
出典
2012-02-09 13:26:14
Jay
デフォルトではByValですが、実際にはどのような値と参照によるものなのかを理解していることを確認してください(http://msdn.microsoft.com/en-us/library/ddck1z30.aspx)。 –
ほとんどの場合、ByValを渡したいと思っています。これは実際にはデフォルトです。コードがByValであちこちに詰まっている理由はありません。それはちょうど「ノイズ」です。あなたが絶対に参照渡しセマンティクスを持っている必要があるときだけ、 'ByRef'を明示的に指定してください。 –