c# - Enumerable.Repeat 有一些内存问题?

标签 c# linq ienumerable

我将一个数组初始化为

Double[][] myarr = Enumerable.Repeat(new double[12], 13).ToArray();

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

myarr[0][0]++; 

这会导致所有值如 myarr[1][0]、myarr[2][0]、myarr[3][0] ..... myarr[12][0] 递增 1。

使用 for 循环 (0-12) 我正在初始化时不会出现此问题

myarr[i] = new double[12];

为什么会这样?

最佳答案

其他答案已经说明了问题。解决方案是在每次迭代时创建一个新数组,例如

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

关于c# - Enumerable.Repeat 有一些内存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071032/

相关文章:

c# - 如何在我的类(class)中正确实现 Dispose()?

c# - 是否可以使用反射将字符串转换为 C# 中的函数?

c# - 如何对 List<string> 中的 2 个不同规则进行排序

c# - 使用 linq 时,在 .ForEach() 之前调用 .Any() 有什么好处吗?

c# - 如何将左外连接添加到分组和求和的 LINQ 查询中

c# - 何时在 Blazor 中使用 ValueChanged 和 ValueExpression?

c# - LINQ 选择列值为 NULL 的行

c# - IEnumerable 属性中的 LINQ 过滤会破坏绑定(bind)

c# - 我如何从另一个可枚举的 c# 中插入一个可枚举的

c# - 实现不可变枚举器