可能重复:
C#自动初始化列表
我有一个整数列表,具有特定的容量,我希望在声明时能够自动填充。
List<int> x = new List<int>(10);
有没有更简单的方法来填充这个列表,使它包含10个默认值为int类型的整数,而不是通过循环并添加元素的方式?
可能重复:
C#自动初始化列表
我有一个整数列表,具有特定的容量,我希望在声明时能够自动填充。
List<int> x = new List<int>(10);
有没有更简单的方法来填充这个列表,使它包含10个默认值为int类型的整数,而不是通过循环并添加元素的方式?
好的,你可以让 LINQ 为你执行循环:
List<int> x = Enumerable.Repeat(value, count).ToList();
不清楚你所说的“默认值”是指0还是自定义的默认值。
你可以通过创建一个数组来稍微提高效率(在执行时间上更好;但占用内存更多):
List<int> x = new List<int>(new int[count]);
这将从数组中进行块复制到列表中,这可能比 ToList
所需的循环更有效率。
List<Items> listOfItems
,其中 public Items {int id; DateTime currentDateTime;}
。需要让 currentDateTime
的值相同。有可能吗? - Praveenint 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]);
ADD
这是一个通用的方法,可以获取带有默认值的列表:
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]);
}