【发布时间】:2011-11-10 15:18:08
【问题描述】:
在 C++ 标准模板库 (STL) 中,例如,可以使用以下构造函数创建由同一元素的多个副本组成的向量:
std::vector<double> v(10, 2.0);
这将创建一个包含 10 个双精度的向量,最初设置为 2.0。
我想在 C# 中做类似的事情,更具体地说,创建一个 n 双精度数组,所有元素都初始化为相同的值 x。
我想出了以下单行,依赖于泛型集合和 LINQ:
double[] v = new double[n].Select(item => x).ToArray();
但是,如果外人会阅读此代码,我认为不会立即看出该代码的实际作用。我也关心性能,我想通过 for 循环初始化数组元素会更快(尽管我没有检查过)。有人知道执行此任务的更清洁和/或更有效的方法吗?
【问题讨论】:
-
Extension constructors 非常适合这种使用场景。