如何在C++/CLI中将C#可为null的枚举强制转换为int



我想将C#可为null的枚举强制转换为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' 
   }
}

那么,如何强制转换可为null的枚举呢?没有这样的可为null的int c++/CLI或?

感谢

您需要使用HasValue来测试null(由于某种原因,C++/CLI不允许您与nullptr进行比较),然后您可以使用Value来检索值,然后将其强制转换为integer。

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

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

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

最新更新