C# 在C语言中将一个标志枚举转换为另一个标志枚举#
我有两个标志枚举,如下所示C# 在C语言中将一个标志枚举转换为另一个标志枚举#,c#,enums,C#,Enums,我有两个标志枚举,如下所示 [Flags] public enum EnumTypeOne: ulong { NONE = 0, STUFF_ONE = ( 1 << 0 ), STUFF_TWO = ( 1 << 1 ) } [Flags] public enum EnumTypeTwo: ulong { NONE
[Flags]
public enum EnumTypeOne: ulong
{
NONE = 0,
STUFF_ONE = ( 1 << 0 ),
STUFF_TWO = ( 1 << 1 )
}
[Flags]
public enum EnumTypeTwo: ulong
{
NONE = 0,
STUFF_ONE = ( 1 << 0 ),
STUFF_TWO = ( 1 << 1 )
}
如上所述,这仅在使用单个标志时有效,使用多个标志会使其失效
有没有一种解决方案可以让我在两个枚举之间高效地进行转换?只需强制转换即可
EnumTypeOne a = EnumTypeOne.STUFF_ONE|EnumTypeOne.STUFF_TWO;
EnumTypeTwo b = (EnumTypeTwo)a;
谢谢,没想到会这么简单@const_ref:enum下面只是整数,因此如果值的含义相同,则可以按原样在它们之间进行转换。@siride我知道这是一个隐藏的ulong,但我过去在将enum转换为enum时遇到过困难,真的没想到会这么简单。干杯
EnumTypeOne a = EnumTypeOne.STUFF_ONE|EnumTypeOne.STUFF_TWO;
EnumTypeTwo b = (EnumTypeTwo)a;