感叹号在数组中存储多个函数调用

时间:2014-10-09 05:37:01

标签: c# arrays matrix-multiplication

我的函数返回一个包含2个值的int数组 让我们说res [0]和res [1]

当我多次在for循环中调用数组时,并且当我将结果存储在另一个数组中时,在每次迭代中结果都会覆盖新结果。

如果第一个调用返回[0,1],数组将[0,1]存储在索引[0]和[1],这很好,但是当我再次调用该函数时,新的结果存储在相同的索引[0]和[1] 我怎么能避免这种情况?

功能代码:

 private void MatrixMul(string subInput, int[,] key, int [] result)
    {
        for (int row = 0; row < key.GetLength(0); row++)
        {
            for (int col = 0; col < key.GetLength(0); col++)
            {
               result[row]+= key[row, col] * AtoZ.IndexOf(subInput[col]);   
            }
        }
    }

致电代码:

for (int i = 0; i < outPut.Length; i++)
            {
               MatrixMul(outPut[i], key,encChars);
            }

例如,我的outPut包含以下内容:&#34; TH&#34;,&#34; IS&#34;,&#34; AT&#34; 当我用数组的第一个元素&#34; TH&#34;调用函数时,它会转换&#34; T&#34;到它的等价数字并应用一些计算和相同的&#34; H&#34;。让我们说最后的答案是20,对于&#34; T&#34; &#34; H&#34;。 问题是每次encChars都会将值存储在索引0和1: encChars [0] = 20 encChars [1] = 30 当我再次调用该函数时,它会将新值存储在0和1 ....这是因为我没有在每次调用时更改encChars的索引值,所以我该怎么做? / p>

1 个答案:

答案 0 :(得分:0)

如果要累积给定数组中的值,则不要在方法中创建新值,而是将其声明为参数并修改值。