我知道这是由引用而不是值传递引起的问题,但是我不确定该如何解决。
我有一个字段变量string[][] _cubeState
,它表示2x2 Rubiks多维数据集的状态。这个锯齿状的数组表示任何旋转之前多维数据集的状态,并且应该在每次旋转之后更新,但仅在我的rotation方法返回并覆盖它之后才更新。
实际上发生的是,当我到达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;
}
参考方案
这是复制锯齿数组的方法:
如何将字符串转换为数组名称(php)? - php我有4个数组,每个数组都有一个问题和答案。我想选择一个随机的问题/答案数组。这是我的代码:<?php $query_1 = array("What is two plus three?", "5"); $query_2 = array("What is four plus two?", …
如何将JToken转换为string []? - c#我正在尝试从JObject将数组读取为string [],但我不知道如何做。该代码非常简单,如下所示,但不起作用。失败失败,无法将JToken转换为字符串[]JObject Items = jsonSerializer.Deserialize<JObject>(jtr); string[] brands = null; brands = (str…
如何用Java代码制作输入表单(不是使用JForm的Netbeans)? - java我想用Java创建输入表单,以便用户可以输入详细信息。像这样: 我的密码import java.awt.GridLayout; import javax.swing.*; class JOptionPaneTest { public static void main(String[] args) { String[] items = {"One…
在Django中聚合save()? - python我正在使用带有sqlite后端的Django,并且写入性能是一个问题。在某个阶段,我可能会毕业于“适当的”数据库,但是目前我仍然坚持使用sqlite。我认为我的写入性能问题可能与以下事实有关:我创建了大量行,并且大概每次save()一个行时,它都会锁定,解锁和同步磁盘上的数据库。如何将大量save()调用聚合到一个数据库操作中? 参考方案 编辑:不建议使用c…
如何将来自c#函数的字符串添加到元标记(引号内)? - javascript这有效<title><%=MyLib.data.GetMetaTitle()%></title> 这不<meta name="description" content="<%=MyLib.data.GetMetaDescription()%>" > 返回值:&…