【发布时间】:2017-04-17 03:33:33
【问题描述】:
假设我们有一个类似这个的双精度数组,稍后用于其他东西。
double[] myArray = new double[25];
如何用一个设定值替换该数组中的所有值?
【问题讨论】:
-
var array = Enumerable.Range(0, 25).Select(_ => 0d).ToArray();
标签: c#
假设我们有一个类似这个的双精度数组,稍后用于其他东西。
double[] myArray = new double[25];
如何用一个设定值替换该数组中的所有值?
【问题讨论】:
var array = Enumerable.Range(0, 25).Select(_ => 0d).ToArray();
标签: c#
“华而不实”的方式(只需新建一个数组):
var array = Enumerable.Repeat(value, count).ToArray();
或者
Array.ConvertAll(array, e => value);
【讨论】:
count 更好?
Repeat 的效率低于 for 循环方法,并且 ConvertAll 用于不同的目的(转换类型),所以有点误导。它也使用for-loop[source]。
还有更炫的方法,但是
for (int i = 0; i < myArray.Length; ++i){
myArray[i] = foo; /*the new value*/
}
简洁明了。
【讨论】:
i < myArray.Length 会不会更好?