【问题标题】:Why I can't use Enum Value in Public Const "Constant expression is required"为什么我不能在公共常量中使用枚举值“需要常量表达式”
【发布时间】:2014-06-18 13:26:04
【问题描述】:

我试图在我的 VB 代码中引用另一个类的枚举。我将枚举附加到常量中字符串的末尾。然后我取 Enum 的 .ToString。

当我研究错误“需要常量表达式”时,我被引导到 MSDN 页面 http://msdn.microsoft.com/en-us/library/6707e415(v=vs.90).aspx

在页面中它声明:“如果声明是一个 Const 语句,请检查以确保该常量是......一个枚举成员......”

我在这里做错了什么?

Public Const c_sqlRStaffWithThePositionID As String = "SELECT GRA.* " + 
"FROM GRA_RS_AFF GRA " + "INNER JOIN GRA_DBUSER U ON U.id = GRA.ID " + 
"WHERE POSITION = @Position AND U.UserType <> " +     
Core.Access.UserType.AccessOnly.ToString 

【问题讨论】:

  • 我们可以看到代码吗?你说的部分内容毫无意义appending the Enum to the end of a string in the Constant。该代码将阐明您的意思
  • 我在这里做错了什么?您没有发布任何代码。如果你打电话给ToString,那么它就不再是一个常数了。但是请发布代码以便我们提供帮助。
  • Public Const c_sqlRStaffWithThePositionID As String = "SELECT GRA.* " + "FROM GRA_RS_AFF GRA " + "INNER JOIN GRA_DBUSER U ON U.id = GRA.ID " + "WHERE POSITION = @Position AND U .UserType " + Core.Access.UserType.AccessOnly.ToString

标签: vb.net enums constants


【解决方案1】:

您不能将 Enum 的值分配给 Const。

这行不通:

Public Enum FooBar
    Foo
    Bar
End Enum

Private Const Val As String = FooBar.Foo.ToString()

只需将 Const 设为变量即可。这有效:

Public Enum FooBar
    Foo
    Bar
End Enum

Private _val As String = FooBar.Foo.ToString '_val = "Foo"

【讨论】:

  • 好的,感谢您的解释。我想我误解了 MSDN 页面
  • 您可以将枚举值分配给常量:Private Const Val As FooBar = FooBar.Foo。你不能像操作员那样做。
  • 谢谢大家。感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2011-10-22
相关资源
最近更新 更多