流利的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