2014-06-18 27 views
-1

我想在VB代碼中引用另一個類的枚舉。我將Enum附加到Constant中字符串的末尾。然後我接收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 
+0

我們可以看到代碼?你說的一部分是沒有任何意義的,就是把Enum附加到常量字符串的末尾。該代碼將澄清你的意思 – Plutonix

+3

_我在這裏做錯了什麼?_你沒有發佈任何代碼。如果你調用'ToString',那麼它不再是一個常量。但發佈代碼,以便我們可以提供幫助。 –

+0

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 – user1760769

回答

0

您不能將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" 
+0

好的,謝謝你的解釋。我想我誤解了MSDN頁面 – user1760769

+0

你可以給一個常量分配一個枚舉值:Private Const Val As FooBar = FooBar.Foo。你做不到這樣做的方式。 –

+0

謝謝大家。我讚賞澄清。 – user1760769

相關問題