Почему я не могу использовать значение Enum в общедоступном Const «Требуется постоянное выражение»

#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. Спасибо всем. Я ценю разъяснение.