C#中枚举之间的转换

Ben*_*est 8 .net c# enums casting

可能重复:
将枚举转换为另一种类型的枚举

在不同类型的枚举之间进行转换时,是否可以直接从一种类型转换为另一种类型?

LicenseTypes type;
TypeOfLicense type2;

type2 = (TypeOfLicense)type;
Run Code Online (Sandbox Code Playgroud)

或者是否有必要先将枚举转换为int?编译器没有抱怨,但我想确保我不会在运行时获得某种时髦的转换异常.

这可能看起来很奇怪,但两个枚举在结构和价值上都是相同的.在这种情况下,只有类型名称不同.

Hab*_*bib 8

虽然它是重复的,我也标记了它.你可以做简单的转换,beucase的底层类型是int,你可以这样做:

LicenseTypes type = (LicenseTypes)TypeOfLicense.value3;
Run Code Online (Sandbox Code Playgroud)

这里type将保持值'0';

假设你有:

public enum LicenseTypes 
{
    value1,
    value2,
}
public enum TypeOfLicense
{
    value3, 
    value4,
    value5
}
Run Code Online (Sandbox Code Playgroud)

但是如果你尝试Cast,TypeOfLicence.value5那么变量type将保存int值2

LicenseTypes type = (LicenseTypes)TypeOfLicense.value5;
Run Code Online (Sandbox Code Playgroud)

您还可以查看此链接,以便为枚举之间的转换创建扩展方法.(它是类似问题的公认答案)