0

クラス内のメソッドで参照によって渡されるパラメーターの値を変更するにはどうすればよいですか?

すなわち:

Public Class Setting

    Public Sub New(Optional ByRef target as String = Nothing)
        _target = target
    End Sub

    Private Sub Go()
        If Not IsNothing(_target) Then
            _target = "New Value"
        End If
    End Sub

End Class

使用法:

Dim var1 as String = "Old Value"
Dim s as New Setting(var1)
s.Go()

s.Go() の後、私は得ることを期待しています:

var1 = "New Value"

しかし、私は得ています:

var1 = "Old Value"

ありがとう

4

3 に答える 3

1

ラッパークラスを使用する

たとえば、StringBuilder をラッパー クラスとして使用します。

Public Class Setting
    Dim _target As StringBuilder
Public Sub New(Optional ByRef target as StringBuilder = Nothing)
    _target = target
End Sub

Private Sub ChangeValue()
    If Not IsNothing(_target) Then
        _target.Clear()
        _target.Append("New Value")
    End If
End Sub

Public Sub Go()
    ChangeValue()
End Sub

End Class
Sub Main()
    Dim var1 as New StringBuilder("Old Value")
    Dim s as New Setting(var1)
    s.Go()
    Console.WriteLine(var1)
End Sub
于 2013-11-07T18:46:19.913 に答える