我想将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