2010-01-27 22 views
5

Estoy tratando de guardar una marca de tiempo en una constante al comienzo de la ejecución de un programa que se utilizará en todo el programa. Por ejemplo:¿Es posible declarar una constante dinámica en VB .NET?

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

Sin embargo, este código genera un error de compilación: "Se requiere expresión constante". ¿Eso significa que todas las constantes en VB .NET deben contener datos planos, estáticos y codificados? Sé que es posible inicializar una constante con un valor dinámico en otros lenguajes (como Java); lo que lo convierte en una constante es que después de la asignación inicial ya no puede cambiarla. ¿Hay un equivalente en VB .NET?

Respuesta

6

Lo que está buscando es la palabra clave de solo lectura. La marca de tiempo debe calcularse en tiempo de ejecución y no puede ser constante.

ReadOnly TIME_STAMP As String = Format(Now(), "hhmm") 
7

Se deben limitarse a facilitar Shared Readonly en lugar de Const - este último sólo se aplica a constantes en tiempo de compilación. Shared Readonly aún evitará que alguien cambie el valor.

Java en realidad no tienen un concepto como Const - sólo se ve cuando static final valores son realmente constantes en tiempo de compilación.

1

Por definición, las constantes no son dinámicas. Si quieres una variable que se fijará una vez, y no se modificó de nuevo, creo que busca la palabra clave ReadOnly ...

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

Tenga en cuenta que 'compartida' es opcional.

+0

¿por qué hay brazales entre 'Shared'? – Pacerier

+0

Porque es (opcional) según cómo esté diseñada la biblioteca. –

+0

es engañoso aunque – Pacerier

Cuestiones relacionadas