2014-04-15 13 views
0

我移植一些C#代碼,C++ CLI,我需要投的ushort如何在C++ CLI中轉換託管數組?

這是一個管理的陣列的C#代碼

foreach(ushort v in mo.Properties["ChassisTypes"].Value as ushort[]) 

這是我嘗試到目前爲止

for each(USHORT ^v in (USHORT[] ^) mo.Properties["ChassisTypes"].Value) 

不幸這是給我一些錯誤

1智能感知:不完整的類型是不允許

2智能感知:預期「)」

3智能感知:表達式必須具有類類型

什麼是施放這種陣列的在C++ CLI的正確方法?

+0

我相信「as」會轉化爲dynamic_cast。 – Ben

+1

'ushort []'=>'array ' –

+1

對於陣列來說,它是'safe_cast <>'陣列,'array ^'。 –

回答

2

你可以試試下面的代碼:

for each(UInt16 v in (array<UInt16>^)(mo->Properties["ChassisTypes"]->Value)) 
{ 
} 

爲了安全起見,你可以使用dynamic_cast作爲@Ben說。

array<UInt16>^ chassisTypes = dynamic_cast<array<UInt16>^>(mo->Properties["ChassisTypes"]->Value); 
if (chassisTypes != nullptr) 
    for each(UInt16 v in chassisTypes) 
    { 
    } 
相關問題