繁体   English   中英

在C#中添加2个对象数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM