2011-09-08 17 views
18

C'è un modo per utilizzare qualcosa di simile:Ricezione 'espressione viene assegnato deve essere costante' quando è

private const int MaxTextLength = "Text i want to use".Length; 

penso che sarebbe più leggibile e meno soggetto a errori di usare qualcosa di simile:

private const int MaxTextLength = 18; 

Ci sono modi per avere la lunghezza del testo come sorgente per una variabile costante?

+9

"variabile costante"? – BoltClock

risposta

23
private readonly static int MaxTextLength = "Text i want to use".Length; 
12

Utilizzare static readonly anziché const.

costanti devono essere momento della compilazione costanti

+1

Ma la variabile statica readonly non funziona nell'istruzione case. – MSTdev

5

Purtroppo, se si utilizza la parola chiave const il valore sul lato destro della '=' deve essere una costante fase di compilazione. L'utilizzo di una "stringa" .length richiede l'esecuzione di codice .NET che può avvenire solo quando l'applicazione è in esecuzione, non durante la compilazione.

È possibile considerare di rendere il campo in sola lettura anziché in const.

0

Non certo perché si vuole fare questo, ma come su ...

private const string MaxText = "Text i want to use."; 

private static int MaxTextLength { get { return MaxText.Length; } } 
0

fa il valore di bisogno di essere un const? Una lettura statica potrebbe funzionare solo per il tuo caso?

private static readonly int MaxTextLength = "Text i want to use".Length; 

Ciò consentirà di scrivere il codice in modo simile al primo esempio.

Problemi correlati