タイトル | : Re^2: 配列のByVal、ByRef渡しについて |
記事No | : 4771 |
投稿日 | : 2007/01/05(Fri) 18:52 |
投稿者 | : はじめてのプログラミング |
> 下記に書いてある事をよく読んでご自分でも試して確認して見て下さい。 > http://www.microsoft.com/japan/msdn/net/vbnetref/vbnetref3-6.aspx 自分なりに読んで、試してみて ・値渡しか参照渡しかの違いによって 実引数と仮引数が一身同体であるかどうかが決まる。 ・引数のデータ型が値型か参照型かによって 引数そのものがデータ実体か、それとも参照情報であるかが決まる。
値渡し(ByVal)や参照渡し(ByRef)と、値型や参照型とは、 別であると、ByValとByRef違いについて、自分なりに理解 できたと思います。
ただ、また元に質問に戻ってしまうのですのですが なぜ、配列をByVal/ByRefで渡した場合で、メッソド一覧が表示がされたり されないのかはわかりませんでした。 私の開発環境の設定のせいでしょうか?どこか考えかたが間違っているのでしょうか? ・開発環境 Windows XP HomeEdition SP2 VB .NET2003
・ソースです。 ----------------------------------------------------------------- Private Sub Sort(ByVal bbb() As Integer, ByVal ccc As Integer) ↓↓ Private Sub Sort(ByRef bbb() As Integer, ByVal ccc As Integer) bbb.GetUpperBound(0) 'Byvalの場合、bbb.(ドット)でメッソド一覧が表示される
bbb.GetUpperBound(0) 'Byvalの場合、bbb.(ドット)でメッソド一覧が表示されない '最後まで記述する MsgBox(bbb(0)) MsgBox(ccc)
ccc = 500 'ByValの場合、変化しない bbb(0) = 0 '同じ実態を参照するので変化 bbb = Nothing 'ByValの場合、配列自体の参照情報は変化なし End Sub -------------------------------------------------------------------------------------- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim b() As Integer = {84, 121, 43} Dim c As Integer = 100
Sort(b, c)
If b Is Nothing Then '何もしない Else MsgBox(b(0)) End If
MsgBox(c) End Sub
|