2010-01-27 2 views
5

Sto provando a salvare un timestamp in una costante all'inizio dell'esecuzione di un programma da utilizzare per tutto il programma. Ad esempio:È possibile dichiarare una costante dinamica in VB .NET?

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

Tuttavia, questo codice genera un errore del compilatore: "È richiesta un'espressione costante". Ciò significa che tutte le costanti in VB .NET devono contenere dati flat, statici e codificati? So che è possibile inizializzare una costante con un valore dinamico in altri linguaggi (come Java) - ciò che lo rende una costante è che dopo l'assegnazione iniziale non è più possibile cambiarlo. Esiste un equivalente in VB .NET?

risposta

6

Quello che stai cercando è la parola chiave readonly. Un timestamp deve essere calcolato in fase di esecuzione e non può essere costante.

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

È necessario rendere Shared Readonly invece di Const - quest'ultimo si applica solo ai fase di compilazione costanti. Shared Readonly impedirà comunque a chiunque di modificare il valore.

Java in realtà non hanno un concetto come Const - è visto proprio quando static final valori sono in realtà in fase di compilazione costanti.

1

Per definizione, le costanti non sono dinamiche. Se si desidera una variabile da impostare una volta, e non modificato di nuovo, credo che si sta cercando per la parola chiave ReadOnly ...

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

nota che 'condiviso' è opzionale.

+0

perché ci sono dei braccialetti tra 'Condivisi'? – Pacerier

+0

Perché è (opzionale) a seconda di come è progettata la libreria. –

+0

è fuorviante però – Pacerier