我正在尝试使用0到20000范围内的10000个随机整数填充列表.以下是我如何执行此操作的代码:
List<int> rand_num = new List<int>();
Random rand = new Random();
int i =0;
//int counter = 0;
while (i < 10000)
{
rand_num.Add(rand.Next(0, 20000));
i++;
}
textBox1.Text = rand_num.Capacity.ToString();
Run Code Online (Sandbox Code Playgroud)
问题是当它到达textBox1.Text = rand_num.Capacity.ToString();线路时,输出是16384.我只输入了10000个数字,它怎么能比我需要的更大到6384?我错过了关于列表在c#中的行为方式吗?
Capacity在需要在内部调整大小之前,列表可以容纳多少.
容量始终大于或等于Count.如果Count在添加元素时超出容量,则在复制旧元素和添加新元素之前,通过自动重新分配内部数组来增加容量.
您正在寻找的是Count,它返回列表中当前元素的数量.
textBox1.Text = rand_num.Count.ToString();
Run Code Online (Sandbox Code Playgroud)
当元素数量需要超过容量时,.NET将调整内部数组的大小,以便它可以容纳更多值,这通常是一项昂贵的操作.如果您事先知道所需的最大值,也可以设置Capacity属性.