0
当我们从“单一系统”应用程序转移到可将任务转移到分布式处理节点的应用程序时,我们正在改变大量代码。现有代码混合使用非托管和现在管理的C++代码,但也使用C#代码在节点和控制器之间提供WCF接口。将MFC CArray <int>转换为托管C++中的列表<int>的最快转换
作为此举的结果,我看到在可预见的未来可能会保留的通用代码模式是将MFC CArray中的整数ID值转换为托管列表的基本转换,以启用WCF上的序列化。目前的格局是:
List<int>^ fixtures = gcnew List<int>(aFixtureIds.GetCount());
for(int i = 0; i < aFixtureIds.GetCount(); i++) //aFixtureIds is of MFC type CArray<int,int>
{
fixtures->Add(aFixtureIds[i]);
}
我们还可以使用反向类似的东西,在这里如果返回一个列表,我们可以通过它在一个迭代循环并调用添加它转换成一个CIntArray用于调用函数。
我明白上面看起来不是很密集,但它确实被称为很多 - 是否有一个更好的模式来执行这个基本列表< - > CArray转换会占用较少的处理时间?这是一种可以被编译器有效优化的代码(我怀疑它不是,但愿意纠正)?清单大小各不相同,但通常是从1到数万个项目的任何项目,可能更多。