用默认值填充List <int>?

可能重复:
自动初始化C#列表

我有一个具有一定容量的整数列表,我希望在声明时自动填充。

List<int> x = new List<int>(10); 

是否有一个更简单的方法来填充这个列表,有10个int,默认值为int,而不是循环和添加项目?

那么,你可以问LINQ为你做循环:

 List<int> x = Enumerable.Repeat(value, count).ToList(); 

目前还不清楚“默认值”是指0还是自定义默认值。

你可以通过创build一个数组来使这个效率稍微高一些(在执行时间内;在内存中更糟):

 List<int> x = new List<int>(new int[count]); 

这将从数组中进行块复制到列表中,这可能比ToList所需的循环效率更高。

 int defaultValue = 0; return Enumerable.Repeat(defaultValue, 10).ToList(); 

如果你有一个固定长度的列表,你想要所有的元素都有默认值,那么也许你应该只使用一个数组?

 int[] x = new int[10]; 

或者,这可能是自定义扩展方法的粘贴位置

 public static void Fill<T>(this ICollection<T> lst, int num) { Fill(lst, default(T), num); } public static void Fill<T>(this ICollection<T> lst, T val, int num) { lst.Clear(); for(int i = 0; i < num; i++) lst.Add(val); } 

然后你甚至可以为List类添加一个特殊的重载来填充容量

 public static void Fill<T>(this List<T> lst, T val) { Fill(lst, val, lst.Capacity); } public static void Fill<T>(this List<T> lst) { Fill(lst, default(T), lst.Capacity); } 

那么你可以说

 List<int> x = new List(10).Fill(); 

 int[] arr = new int[10]; List<int> list = new List<int>(arr); 
 var count = 10; var list = new List<int>(new int[count]); 

以下是通过默认值获取列表的一般方法:

  public static List<T> GetListFilledWithDefaulValues<T>(int count) { if (count < 0) throw new ArgumentException("Count of elements cannot be less than zero", "count"); return new List<T>(new T[count]); }