流利的API看起来有点更具可读性在这种情况下,但其不太容易看出你的代码的意图:
var list = Enumerable.Range(0, 10).Select(_ => new MyObject()).ToList();
简单,如果循环是快速和容易理解,但它也隐藏意图 - 的10个项目
创建列表
List<MyObject> list = new List<MyObject>();
for (int i = 0; i < 10; i++)
list.Add(new MyObject());
的可读性最好的事情是一个建设者,这将说明你的意图
public class Builder<T>
where T : new()
{
public static IList<T> CreateListOfSize(int size)
{
List<T> list = new List<T>();
for (int i = 0; i < size; i++)
list.Add(new T());
return list;
}
}
用法:
var list = Builder<MyObject>.CreateListOfSize(10);
该解决方案速度如同简单循环,意图非常明确。在这种情况下,我们也有最少量的代码可供编写。
你在MyObject的某个地方使用Range值还是只需要任意的对象? – Tilak
@Tilak:任意对象(因此是下划线) – Eric
IMO简单循环对于LINQ查询而言可忽略不计(可读性/性能)。 – Tilak