如何在C++CLI中强制转换托管阵列
本文关键字:转换 阵列 C++CLI | 更新日期: 2023-09-27 17:58:40
我正在将一些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)
{
}