4

次の例では、ByRef または ByVal の両方の関数で List(T) オブジェクトを渡すかどうかは重要ですか?

List は参照型なので、オブジェクト ByVal を渡しても常に値が変更されるというのは正しいですか。

リストが更新されているため、関数「ListChanged」でオブジェクトbyRefを渡すとよいでしょうか。

Public Class MyClass_

    Public Sub TestMethod()

        Dim List_1 As New List(Of Integer)()
        Dim List_2 As New List(Of Integer)()

        List_1.Add(100)
        List_2.Add(50)

        List_1 = ActualListNotChanged(List_1)  '---101
        List_2 = ListChanged(List_2)        '---50,51

    End Sub


    Private Function ActualListNotChanged(ByVal lst As List(Of Integer)) As List(Of Integer)

        Dim nList As New List(Of Integer)()

        For Each item As Integer In lst
            If item <> 50 Then
                nList.Add(101)
            End If
        Next item

        Return nList

    End Function

    Private Function ListChanged(ByVal lst As List(Of Integer)) As List(Of Integer)

        lst.Add(51)
        Return lst

    End Function

End Class
4

2 に答える 2