我的程序存在问题,我被困在了。基本上processResults采用我的2D数组并以1D数组的形式返回每列的总和,例如{15,13,19}。 calculateWiningResult然后重新排列此1D数组以查找数组中的最大结果并返回此最大结果的值。在displayWinningResult中,我想使用原始的 unsorted 数组来执行一些计算,但是它似乎从参数中接收排序数组。对不起,我是编程新手,不确定如何解决这个问题。
int[,] theResults = {{4, 7, 4},
{5, 1, 7},
{6, 5, 8}}
int[] results = processResults(theResults);
int winningResult = calculateWiningResult(results);
displayWinningResult(winningResult, results);
答案 0 :(得分:2)
C#按值传递引用,因此当您调用calculateWinningResult(results)
时,您可能正在排序results
,其效果是,猜测是什么,排序results
。您认为results
正在按值传递,这意味着results
的副本会传递到calculateWinningResult
并且原始版本不会受到影响。你可能想要:
int[] resultsCopy = new int[results.Length];
Array.Copy(results, resultsCopy, results.Length);
int winningResult = calculateWiningResult(resultsCopy);
答案 1 :(得分:0)
你走了。使用副本或克隆。
public void myCoolFunction()
{
int[,] theResults = new int [rowNum,colNum]{{4, 7, 4},
{5, 1, 7},
{6, 5, 8}};
int[,] copyTheResult = (int[,]) theResult.Clone();
int[] results = processResults(theResults);
// Similary you can do for all arrays.
}