以下是我的枚举。当我访问我的Enum时,它显示0表示N,1表示IC。
我想得到N和IC
Public Enum StatusCode
<Description("New")> _
N
<Description("Incomplete")> _
IC
End Enum
这是我的vb代码
oBLL.StatusCode = StatusCode.N
答案 0 :(得分:3)
它根本没有显示错误的值,它显示正确的值(N = 0
)。但是,您真正关注的是enum
的名称而不是值。要获取名称,只需拨打ToString
oBLL.StatusCode = StatusCode.N.ToString()
这将在内部调用Enum.GetValue。
答案 1 :(得分:0)
这是Enum
的作用。它充当int
类型的前端(或指定时的其他数字类型)。由于N
是第一个而IC
是第二个,因此它们分别被赋予int
值0和1。
我的建议: constants最适合您尝试实现的目标。
Public Shared Class StatusCode
Public Const N As String = "N"
Public Const IC As String = "IC"
End Class
' ...
oBLL.StatusCode = StatusCode.N
如果你坚持使用枚举,你可以这样得到字符串表示:
oBLL.StatusCode = Enum.GetName(StatusCode.GetType(), StatusCode.N)
但请注意,在运行时获取此值意味着reflection,应该避免使用。
答案 2 :(得分:0)
没有在VB测试 但在C#中,我没有那种行为 最后两行甚至没有通过编译器(不能隐式转换)
public enum enumRole : byte { [Description("First Level Review")] fstLvlRev = 1, [Description("Second Level Review")] secLvlRev = 2 };
public MainWindow() {
System.Diagnostics.Debug.WriteLine(enumRole.secLvlRev);
enumRole ee = enumRole.secLvlRev;
string es = enumRole.secLvlRev.ToString();
byte eb = (byte)enumRole.secLvlRev;
string ees = enumRole.secLvlRev;
byte eeb = enumRole.secLvlRev;