如何在c ++ / CLI中将C#nullable Enum强制转换为int

时间:2014-11-07 17:56:29

标签: enums c++-cli nullable

我想将一个C#nullable枚举转换为int。

现在,我有类似的东西:

C#

public enum Dir
{
 Up = 0,
 Down = 1,
 Left = 2,
 Right = 3
}

C / CLI

function(System::Nullable<Dir> d){
   if(d != NULL){
       (int)d; error C2440: 'type cast' : cannot convert from 'System::Nullable<T>' to 'int' 
   }
}

那么,如何构建一个可以为空的枚举? 没有这样可以为空的int c ++ / CLI或?

由于

2 个答案:

答案 0 :(得分:2)

您需要使用HasValue来测试null(由于某些原因,C ++ / CLI不允许您与nullptr进行比较),并且您可以使用Value来检索value,然后可以转换为整数。

void function(System::Nullable<Dir> d){
   if(d.HasValue){
       int i = (int)d.Value;
   }
}

答案 1 :(得分:0)

您应该能够使用Nullable<T>属性访问.Value的值,并将其转换为int

免责声明:我从未使用过C ++ / CLI