我正在将一些C#代码迁移到C ++ CLI,并且需要转换ushort
的托管数组
这是C#代码
foreach(ushort v in mo.Properties["ChassisTypes"].Value as ushort[])
到目前为止,这是我的尝试
for each(USHORT ^v in (USHORT[] ^) mo.Properties["ChassisTypes"].Value)
不幸的是,这给了我一些错误
1 IntelliSense:不允许输入不完整的类型
2 IntelliSense:预期为')'
3 IntelliSense:表达式必须具有类类型
在C ++ CLI中强制转换此类数组的正确方法是什么?
最佳答案
您可以尝试以下代码:
for each(UInt16 v in (array<UInt16>^)(mo->Properties["ChassisTypes"]->Value))
{
}
为了安全起见,您可以按照@Ben的说明使用
dynamic_cast
。array<UInt16>^ chassisTypes = dynamic_cast<array<UInt16>^>(mo->Properties["ChassisTypes"]->Value);
if (chassisTypes != nullptr)
for each(UInt16 v in chassisTypes)
{
}