Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#大量插入数据结构_C# - Fatal编程技术网

C#大量插入数据结构

C#大量插入数据结构,c#,C#,在C#中,您可以执行以下操作: List<int> registers = new List<int> { 1, 2, 3, 4 }; List<int> register = somewhere(); register.Add(1); register.Add(2); register.Add(3); register.Add(4); List registers=新列表{1,2,3,4}; 这将生成一个列表,其中包含1、2、3和4。假设某个函数给了我

在C#中,您可以执行以下操作:

List<int> registers = new List<int> { 1, 2, 3, 4 };
List<int> register = somewhere();
register.Add(1);
register.Add(2);
register.Add(3);
register.Add(4);
List registers=新列表{1,2,3,4};
这将生成一个列表,其中包含1、2、3和4。假设某个函数给了我一个列表,我想插入一组数字,如下所示:

List<int> registers = new List<int> { 1, 2, 3, 4 };
List<int> register = somewhere();
register.Add(1);
register.Add(2);
register.Add(3);
register.Add(4);
List register=somewhere();
注册。添加(1);
注册。添加(2);
注册。添加(3);
注册。添加(4);

有没有一种更简洁的方法可以像上面的代码片段那样执行此操作?

假设新项目已经是某种可枚举的形式,该方法允许您一次性添加所有项目:

var toBeAdded = new int[] { 1,2,3,4 };
register.AddRange(toBeAdded);

你是说像这样的

List<int> register = somewhere();
register.AddRange(new List<int> { 1, 2, 3, 4 });
List register=somewhere();
AddRange(新列表{1,2,3,4});

我认为你能得到的最干净的东西是:

List<int> register = somewhere();
register.AddRange(new[] { 1, 2, 3, 4 });
List register=somewhere();
register.AddRange(新[]{1,2,3,4});

但是,隐式键入数组可能并不总是可能的。

请注意,虽然您的示例在语法上更清晰,但它不会提供任何性能优势,因为集合初始值设定项仍然会逐个添加项。要添加到DrJokepu的注释中:具体的问题是,在多次调用add时(集合初始值设定项的作用是什么)如果恰好有足够的元素(可能是30+),则始终会多次调整内部数组的大小,AddRange即使在这些情况下也可能只执行一次调整大小。如果您使用数组初始值设定项,则不会进行任何调整。我很失望,我期望有一些大规模的
:P
是的,如果您使用集合初始值设定项硬编码真正大规模的插入,这就是TDWTF材料。