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;