2010-05-12 27 views
43

¿Hay alguna manera de definir una constante para un espacio de nombre completo, en lugar de solo dentro de una clase? Por ejemplo:Constante de espacio de nombres en C#

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

    static class Program 
    { 
    } 
} 

da un error de compilación de la siguiente manera:

esperado clase, delegado, enumeración, interfaz, o estructura

+13

Tenga en cuenta que "la variable constante" es un oxímoron. Las variables varían, es por eso que se llaman "variables". Las constantes permanecen constantes, es por eso que se llaman constantes. Las variables son ubicaciones * de almacenamiento *, las constantes son * valores *. Ellos son completamente diferentes; no puede haber tal cosa como una "variable constante". –

+0

Buen punto - corregido –

Respuesta

78

Creo que no es posible. Pero puedes crear una clase con solo constantes.

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

y luego usarlo como

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

+1, ya que este es el método recomendado por Microsoft http://msdn.microsoft.com/en-us/library/bb397677.aspx – Bryan

+1

Como un lado, otra forma de implementar esto es con su web.config o app.config (dependiendo de cuál tenga). https://stackoverflow.com/a/4256864/105539 – Volomike

11

Esto no es posible

De MSDN:

La palabra clave const se utiliza para modificar una declaración de un campo o variable local.

Dado que solo puede tener un campo o una variable local dentro de una clase, esto significa que no puede tener un const global. (es decir const espacio de nombres)

2

No, no hay. Ponlo en una clase estática o enum.

Cuestiones relacionadas