Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 显示数值而不是文本值的枚举_Asp.net_.net_Vb.net_Enums - Fatal编程技术网

Asp.net 显示数值而不是文本值的枚举

Asp.net 显示数值而不是文本值的枚举,asp.net,.net,vb.net,enums,Asp.net,.net,Vb.net,Enums,下面是我的枚举。当我访问我的枚举时,它显示0表示N,1表示IC 我想得到N和IC Public Enum StatusCode <Description("New")> _ N <Description("Incomplete")> _ IC End Enum 这就是我们要做的。它充当int类型(或指定的其他数字类型)的前端。因为N是第一位,IC是第二位,所以它们分别被赋值为int值0和1 我的建议是:最适合你想要实现的目标 Pub

下面是我的枚举。当我访问我的枚举时,它显示0表示N,1表示IC

我想得到N和IC

 Public Enum StatusCode
    <Description("New")> _
    N

    <Description("Incomplete")> _
    IC
 End Enum
这就是我们要做的。它充当
int
类型(或指定的其他数字类型)的前端。因为
N
是第一位,
IC
是第二位,所以它们分别被赋值为
int
值0和1

我的建议是:最适合你想要实现的目标

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)

但是请注意,在运行时获取此值意味着,这应该避免。

它根本没有显示错误的值,而是显示正确的值(
N=0
)。但是,看起来您真正想要的是
enum
的名称,而不是值。要获取名称,只需调用
ToString

oBLL.StatusCode = StatusCode.N.ToString()
这将在内部调用。

未在VB中测试
但在C#中,我不理解这种行为
最后两行甚至不能通过编译器(不能隐式转换)


我的问题的解决方案是什么?声明常量更好吗?我想知道常量如何更合适?有效地说,
enum
是一个常量。@James归根结底就是要为正确的作业使用正确的类型。当然,您可以将枚举转换为它的字符串表示形式,但是如果您甚至没有按原样使用枚举(正如帖子所建议的),那么声明此枚举有什么意义呢?只需使用普通字符串常量即可。@James plus,获取枚举的字符串表示意味着反射。@Crono我并不是说,如果OP纯粹需要字符串,那么
const
不是更好(事实上更有效)的方法。然而,我认为你的回答很主观。OP具有与其
enum
关联的属性,因此这意味着上下文-您可以为
常量提供什么上下文?另一个论点是,测试
int
是否相等比测试
string
更有效/可靠,因此,实际上,使用枚举将是正确的工作工具。“…运行时意味着反射,这应该避免”-同样是完全主观的。
oBLL.StatusCode = StatusCode.N.ToString()
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;