Можно ли объявить динамическую константу в VB .NET? - PullRequest
5 голосов
/ 28 января 2010

Я пытаюсь сохранить метку времени в константе в начале выполнения программы, чтобы использовать ее во всей программе. Например:

Const TIME_STAMP = Format(Now(), "hhmm")

Однако этот код генерирует ошибку компилятора - «Требуется постоянное выражение». Означает ли это, что все константы в VB .NET должны содержать плоские, статические, жестко закодированные данные? Я знаю, что можно инициализировать константу с динамическим значением в других языках (таких как Java) - что делает ее константой, так это то, что после первоначального присваивания вы больше не можете ее изменить. Есть ли эквивалент в VB .NET?

Ответы [ 3 ]

7 голосов
/ 28 января 2010

Вам нужно сделать это Shared Readonly вместо Const - последнее относится только к константе времени компиляции . Shared Readonly по-прежнему не позволит никому изменить значение.

Java на самом деле не имеет такого понятия, как Const - он просто определяет, когда static final значения фактически являются константами времени компиляции.

6 голосов
/ 28 января 2010

То, что вы ищете, это ключевое слово только для чтения. Отметка времени должна быть рассчитана во время выполнения и не может быть постоянной.

ReadOnly TIME_STAMP As String = Format(Now(), "hhmm")
1 голос
/ 28 января 2010

По определению, константы не являются динамическими. Если вы хотите, чтобы переменная была установлена ​​один раз, а не изменена снова, я думаю, вы ищете ключевое слово ReadOnly ...

Public Shared ReadOnly TIME_STAMP = Format(Now(), "hhmm")

Обратите внимание, что «Shared» является необязательным.

...