tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: 配列のByVal、ByRef渡しについて
投稿日: 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。