如何在C++CLI中强制转换托管阵列
How cast a managed array in C++ CLI?
我正在将一些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)
{
}
相关文章:
- 没有从阵列<float>到阵列<int>的可行转换
- 从较小的阵列到较大的阵列的元素级转换
- 使用 std::transform 在 2d C 阵列上转换为 1d C 数组
- 我需要将阵列样式的邻接矩阵转换为矢量样式(以使其看起来更好)
- 可以使用工会将字符阵列转换为浮动
- 将字符串阵列中的字符转换为浮点
- 我如何将整数转换为存储在字符阵列中的十六进制字节
- 使用高级构造函数将阵列转换为Armadillo Vec
- 将斑点阵列转换为ints阵列
- MBED RTOS将Float转换为字符串/字符阵列
- 将std ::向量转换为阵列和当时的p/调用它会导致访问违规例外,在编组期间mscorlib.dll
- 将valarray转换为基本阵列
- 如何将一个数字(大于8个字节)从字符阵列转换为其ASCII表示
- 将整数转换为阵列(包括领先的零),而无需使用字符串
- 快速将双重指针阵列转换为单个指针,可能是连续的
- 将INT转换为具有选定格式的char阵列
- 将int阵列转换为c 中int的向量
- 如何将一组十六进制字符串转换为字节阵列
- 如何将浮点转换为长度为4的字节阵列(char*的阵列)
- 最快可能的阵列结构,用于转换阵列