2010-01-27 4 views
5

Je tente d'enregistrer un horodatage dans une constante au début de l'exécution d'un programme à utiliser dans tout le programme. Par exemple:Est-il possible de déclarer une constante dynamique dans VB .NET?

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

Cependant, ce code génère une erreur de compilation - "Expression constante est requise". Cela signifie-t-il que toutes les constantes dans VB .NET doivent contenir des données statiques, statiques et codées en dur? Je sais qu'il est possible d'initialiser une constante avec une valeur dynamique dans d'autres langages (comme Java) - ce qui la rend constante, c'est qu'après l'affectation initiale, vous ne pouvez plus la changer. Y a-t-il un équivalent dans VB .NET?

Répondre

6

Ce que vous cherchez est le mot clé readonly. Un horodatage doit être calculé au moment de l'exécution et ne peut pas être constant.

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

Vous devez faire Shared Readonly au lieu de Const - ce dernier applique uniquement aux la compilation constantes. Shared Readonly empêche toujours quiconque de modifier la valeur.

Java ne fait pas ont un concept comme Const - il repère juste au moment où les valeurs sont static final compilation réellement constantes.

1

Par définition, les constantes ne sont pas dynamiques. Si vous voulez une variable à régler une fois, et non modifié à nouveau, je crois que vous cherchez le mot-clé ReadOnly ...

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

Notez que « partagée » est facultative.

+0

Pourquoi y a-t-il des liens entre 'Shared'? – Pacerier

+0

Parce qu'il est (facultatif) en fonction de la façon dont la bibliothèque est conçue. –

+0

il est trompeur si – Pacerier