Visual Studio 2010 Service Pack(Windows Updateで提案)をインストールしたところ、「インテリセンス」に新機能が表示されます。つまり、Function
またはをVB.NETで記述した場合、またはSub
でパラメーターがオートコンプリートされません。 。ByRef
ByVal
1)とにかく、このオプションを以前の状態に戻すように構成できますか?
2)指定しない場合ByX
、デフォルトで使用されるのはどれですか?(いつものようですByRef
)
Visual Studio 2010 Service Pack(Windows Updateで提案)をインストールしたところ、「インテリセンス」に新機能が表示されます。つまり、Function
またはをVB.NETで記述した場合、またはSub
でパラメーターがオートコンプリートされません。 。ByRef
ByVal
1)とにかく、このオプションを以前の状態に戻すように構成できますか?
2)指定しない場合ByX
、デフォルトで使用されるのはどれですか?(いつものようですByRef
)
この投稿はあなたの質問をカバーしているようです:
いいえ、古い動作を取得する方法はありません。これからByVal
はデフォルト (以前のもの) であり、メソッドのパラメーターに自動的に追加されることはありません。
私の意見では、これは VB.NET を C# とより一貫性のあるものにし、不要な「ノイズ」を回避するため、適切な決定です (既に十分に冗長です)。
古い動作:
Private Sub test(ByVal test As String)
End Sub
新しい動作
Private Sub test(test As String)
End Sub
ティムはあなたが直接尋ねたことをカバーしましたが、覚えておくべきことは、ユーザー定義クラスのような参照型変数は、たとえ値で渡されたとしても、そのインスタンスのプロパティなどに変更を加えることができるということです。ただし、オブジェクト全体を変更することはできません。これが、参照によってデフォルトになっているように見える理由かもしれません
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
MSDNから:
参照型の値は、メモリ内の別の場所にあるデータへのポインターです。これは、参照型を値で渡す場合、プロシージャ コードは、基になる要素自体にアクセスできない場合でも、基になる要素のデータへのポインターを持つことを意味します。たとえば、要素が配列変数の場合、プロシージャ コードは変数自体にはアクセスできませんが、配列メンバーにはアクセスできます。