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

我知道这是由引用而不是值传递引起的问题,但是我不确定该如何解决。

我有一个字段变量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()%>" > 返回值:&…