gpt4 book ai didi

c# - 如何在不更改原始字符串的情况下创建和更改新字符串[][]?

转载 作者:行者123 更新时间:2023-12-03 20:11:46 27 4
gpt4 key购买 nike

我知道这是由引用而不是值传递引起的问题,但我不确定需要做什么来解决它。

我有一个字段变量string[][] _cubeState,它表示 2x2 Rubiks 魔方的状态。这个锯齿状数组表示发生任何旋转之前立方体的状态,并且应该在每次旋转之后更新,但只有在我的旋转方法返回并覆盖它之后。

实际发生的情况是,当我到达 newCube[0][index] = _cubeState[0][index + 10]; 行时,该行更新了我的 newCube 数组和我原来的 _cubeState 数组。由于 newCube 引用了cubeState,它也会更新原始的。如何修复此问题,以便cubeState 仅在方法返回后更新?

private string[][] _cubeState;

public Rubiks () {
_cubeState = new string[][] {
new [] { "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F" },
new [] { "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F" }
};

_cubeState = RotateAcw (0);
}

public string[][] RotateAcw (int index) {
string[][] newCube = { _cubeState[0], _cubeState[1] };

newCube[0][index] = _cubeState[0][index + 10];
newCube[1][index] = _cubeState[1][index + 10];

return newCube;
}

最佳答案

这是复制锯齿状数组的方法:

string[][] cubeState = new string[][] {
new [] { "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F" },
new [] { "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F" }
};

string[][] newCube = cubeState.Select(x => x.ToArray()).ToArray();

关于c# - 如何在不更改原始字符串的情况下创建和更改新字符串[][]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56355892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com