Enumerable.Repeat有一些内存问题?

Nik*_*wal 1 c# linq ienumerable

我将一个数组初始化为

Double[][] myarr = Enumerable.Repeat(new double[12], 13).ToArray();
Run Code Online (Sandbox Code Playgroud)

然后在一个循环中,我正在递增值,如

myarr[0][0]++; 
Run Code Online (Sandbox Code Playgroud)

这导致myarr [1] [0],myarr [2] [0],myarr [3] [0] ..... myarr [12] [0]等所有值增加1.

当使用for循环(0-12)我正在初始化时没有发生此问题

myarr[i] = new double[12];
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Jon*_*eet 5

其他答案解释了这个问题.解决方案是在每次迭代时创建一个新数组,例如

double[][] myarr = Enumerable.Range(0, 13)
                             .Select(ignored => new double[12])
                             .ToArray();
Run Code Online (Sandbox Code Playgroud)