0

タイトルと質問が明確でない場合は申し訳ありません。私はそれを説明する良い方法を持っていません。しかし、ここに行きます:

つまり、「testMat」が何らかの形でリンクされており、値を再定義していなくても値が変化します。たとえば、以下のコードを実行すると、testResult の matSum 関数で out1 と out2 の値が (ループ内で) out の変更として変更されていることがわかりますが、その理由はわかりません! それらの値は、testResult1 では変更されません。この動作はどこから来るのですか?

Sub Main()

    Dim testMat As Double(,) = {{1, 2}, {3, 4}}

    Dim testResult As Double(,) = matSum(testMat, testMat, testMat)
    Dim testResult1 As Double(,) = matSum({{1, 2}, {3, 4}}, {{1, 2}, {3, 4}}, {{1, 2}, {3, 4}})

End Sub


Function matSum(ByVal ParamArray args As Double()(,)) As Double(,)
    'This function sums matrices. It assumes you know how to sum matrices.

    Dim m, n As Integer
    Dim out, out1, out2 As Double(,)
    Dim numArgs As Integer = args.Length

    out = args(0)
    out1 = args(1)
    out2 = args(2)
    m = out.GetUpperBound(0)
    n = out.GetUpperBound(1)

    For v As Integer = 1 To numArgs - 1
        For i As Integer = 0 To m
            For j As Integer = 0 To n
                out(i, j) = out(i, j) + args(v)(i, j)
            Next
        Next
    Next

    Return out

End Function
4

1 に答える 1