我知道我们可以通过以下两种方式之一初始化数组:
Enumerable.Repeat(可能导致内存问题?链接:Enumerable.Repeat有一些内存问题?)我有两个问题:
我们可以用Array.ForEach这种方式初始化数组吗?
double[][] myarr = new double[13][];
Array.ForEach(myarr, *enter_code_here*);
Run Code Online (Sandbox Code Playgroud)
我尝试替换enter_code_here为:
s => s = new double[2];
Run Code Online (Sandbox Code Playgroud)
但它没有初始化myarr.
没有任何内存问题的其他数组初始化方法是什么?
你可以使用Enumerable.Repeat很好的初始化任何数组.你唯一需要注意的是,如果数组元素是引用类型,有两种方法可以解决它:
// #1: THIS ARRAY CONTAINS 10 REFERENCES TO THE SAME OBJECT
var myarr = Enumerable.Repeat(new object(), 10).ToArray();
// #2: THIS ARRAY CONTAINS REFERENCES TO 10 DIFFERENT OBJECTS
var myarr = Enumerable.Range(0, 10).Select(i => new object()).ToArray();
// #3: SAME RESULT AS #2 BUT WITH Enumerable.Repeat
var myarr = Enumerable.Repeat(0, 10).Select(i => new object()).ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |