#vb.net #enums #constants
#vb.net #перечисления #константы
Вопрос:
Я пытаюсь сослаться на перечисление из другого класса в моем коде VB. Я добавляю перечисление в конец строки в константе. Затем я беру.toString перечисления.
Когда я исследую ошибку «Требуется постоянное выражение», я перехожу на страницу MSDN http://msdn.microsoft.com/en-us/library/6707e415 (v= против 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
Комментарии:
1. можем ли мы увидеть код? часть того, что вы говорите, не имеет смысла
appending the Enum to the end of a string in the Constant
. Код прояснит, что вы имеете в виду2. Что я здесь делаю не так? Вы не публикуете никакого кода. Если вы вызываете
ToString
, то это больше не константа. Но опубликуйте код, чтобы мы могли помочь.3. Общедоступный Const c_sqlRStaffWithThePositionID в виде строки = «ВЫБЕРИТЕ GRA.* » «ИЗ GRA_RS_AFF GRA » «ВНУТРЕННЕЕ СОЕДИНЕНИЕ GRA_DBUSER U НА U.id = ГРА. ИДЕНТИФИКАТОР » «ГДЕ POSITION = @Position И U.UserType <> » Ядро. Доступ. Тип пользователя. Доступ только. toString
Ответ №1:
Вы не можете присвоить значение Enum константе.
Это не сработает:
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"
Комментарии:
1. Хорошо, спасибо за объяснение. Наверное, я неправильно понял страницу MSDN
2. Вы можете присвоить значение enum константе: Private Const Val как FooBar = FooBar.Foo . Вы просто не можете сделать это так, как это делал op.
3. Спасибо всем. Я ценю разъяснение.