Enumerable.Repeat有一些内存问题? [英] Enumerable.Repeat has some memory issues?
本文介绍了Enumerable.Repeat有一些内存问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将一个数组初始化为
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();
I initialized an Array as
Double[][] myarr = Enumerable.Repeat(new double[12], 13).ToArray();
Then in a loop i am incrementing values like
myarr[0][0]++;
This causes all values like myarr[1][0], myarr[2][0], myarr[3][0] ..... myarr[12][0] to increment by one.
This problem is not occurring when using a for loop (0-12) i am initializing like
myarr[i] = new double[12];
Why is this so?
解决方案
Other answers have explained the problem. The solution is to create a new array on each iteration, e.g.
double[][] myarr = Enumerable.Range(0, 13)
.Select(ignored => new double[12])
.ToArray();
这篇关于Enumerable.Repeat有一些内存问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文