var board = Enumerable.Repeat(Enumerable.Repeat('.', 3).ToArray(), 3).ToArray();
board[0][0] = 'Q';
我在这里尝试创建由相同元素填充的数组 (3*3) 组成的数组。 但是当我尝试更改一个元素 ([0,0]) 时,它会更改所有三个数组的第一个元素。为什么会这样?如何在没有 2 个循环来启动数组的情况下修复此行为?
最佳答案
因为您创建了一个数组 Enumerable.Repeat('.', 3).ToArray()
并克隆了对该数组的引用 3 次。
因此,您对一个值有 3 个引用。
您需要初始化每一行:
var board = Enumerable.Repeat((char[])null, 3).ToArray();
for (int i = 0; i < 3; i++)
{
board[i] = Enumerable.Repeat('.', 3).ToArray();
}
board[0][0] = 'Q';
关于c# - 初始化填充有相同元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44181267/