[英]adding 2 object arrays in C#
我有2个对象数组,我想一个添加到另一个。 这似乎很简单,但似乎无济于事。 这是我现在正在尝试的。
Module[] StaticModules;
Module[] DynamicModules;
Info = Database.Devices[inx];
//Modules = Database.GetDeviceModules(Info);
StaticModules = Database.GetDeviceModules(Info);
DynamicModules = Database.GetDeviceModules(new int[] { 23, 24, 25, 26, 27, 28, 29, 30 });
Array.Resize(ref StaticModules, StaticModules.Length + DynamicModules.Length);
Array.Copy(StaticModules, DynamicModules, DynamicModules.Length);
Modules = StaticModules;
一切似乎都还可以,直到似乎永远被删除并且似乎没有做任何事情的副本。 有一次,我打开了监视窗口,在复制之后,我所有的变量都变成红色,并且看到一条消息,说我必须刷新,因为最后一个函数超时。
您的代码似乎过于复杂。 为什么不这样做:
Modules = StaticModules.Concat(DynamicModules).ToArray();
Array.Copy方法有几个重载。 您可能需要使用这个Array.Copy 。 您选择的重载会覆盖目标数组的元素,因为它们粘贴了从索引0开始的项目。正如@muratgu所说,第一个参数是源数组。
Module[] StaticModules;
Module[] DynamicModules;
Info = Database.Devices[inx];
//Modules = Database.GetDeviceModules(Info);
StaticModules = Database.GetDeviceModules(Info);
var len = StaticModules.Length;
DynamicModules = Database.GetDeviceModules(new int[] { 23, 24, 25, 26, 27, 28, 29, 30 });
Array.Resize(ref StaticModules, StaticModules.Length + DynamicModules.Length);
Array.Copy(DynamicModules, 0, StaticModules, len, DynamicModules.Length);
Modules = StaticModules;
您可以为此使用CopyTo。
Module[] StaticModules;
Module[] DynamicModules;
Module[] FinalModules = new Module[StaticModules.Length + DynamicModules.Length];
StaticModules.CopyTo(FinalModules, 0);
DynamicModules.CopyTo(FinalModules, StaticModules.Length);
这应该为您工作。 我在编译器中尝试过以查看结果。
Array.Copy(DynamicModules, 0, StaticModules, DynamicModules.Length, DynamicModules.Length);
完整代码:
Module[] StaticModules;
Module[] DynamicModules;
Info = Database.Devices[inx];
//Modules = Database.GetDeviceModules(Info);
StaticModules = Database.GetDeviceModules(Info);
DynamicModules = Database.GetDeviceModules(new int[] { 23, 24, 25, 26, 27, 28, 29, 30 });
Array.Resize(ref StaticModules, StaticModules.Length + DynamicModules.Length);
Array.Copy(DynamicModules, 0, StaticModules, DynamicModules.Length, DynamicModules.Length);
Modules = StaticModules;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.