2010-05-12 23 views
43

C'è un modo per definire una costante per un intero spazio dei nomi, piuttosto che solo all'interno di una classe? Per esempio:Costante spazio dei nomi in C#

namespace MyNamespace 
{  
    public const string MY_CONST = "Test"; 

    static class Program 
    { 
    } 
} 

Dà un errore di compilazione come segue:

Previsto classe, delegato, enum, interfaccia, o struct

+13

nota che "variabile costante" è un ossimoro. Le variabili variano, per questo sono chiamate "variabili". Le costanti rimangono costanti, per questo vengono chiamate costanti. Le variabili sono spazi di archiviazione *, * le costanti sono * valori *. Sono completamente diversi; non può esistere una "variabile costante". –

+0

Punto buono - corretto –

risposta

78

Credo che non sia possibile. Ma puoi creare una classe con solo costanti.

public static class GlobalVar 
{ 
    public const string MY_CONST = "Test"; 
} 

e poi l'usano come

class Program 
{ 
    static void Main() 
    { 
     Console.WriteLine(GlobalVar.MY_CONST); 
    } 
} 
+12

+1 in quanto questo è il metodo consigliato da Microsoft http://msdn.microsoft.com/en-us/library/bb397677.aspx – Bryan

+1

Per inciso, un altro modo per implementarlo è con il tuo web.config o app.config (a seconda di quale hai). https://stackoverflow.com/a/4256864/105539 – Volomike

11

Questo non è possibile

Da MSDN:

Viene utilizzata la parola chiave const modificare una dichiarazione di un campo o di una variabile locale.

Poiché è possibile avere solo un campo o una variabile locale all'interno di una classe, ciò significa che non è possibile avere uno const globale. (i.e namespace const)

2

No, non c'è. Mettilo in una classe statica o enum.

Problemi correlati