web-dev-qa-db-fra.com

Constante d'espace de noms en C #

Existe-t-il un moyen de définir une constante pour un espace de noms entier, plutôt que simplement au sein d'une classe? Par exemple:

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

    static class Program
    {
    }
}

Donne une erreur de compilation comme suit:

Classe, délégué, énumération, interface ou structure attendus

50
Paul Michaels

Je pense que ce n'est pas possible. Mais vous pouvez créer une classe avec uniquement des constantes.

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

puis l'utiliser comme

class Program
{
    static void Main()
    {
        Console.WriteLine(GlobalVar.MY_CONST);
    }
}
89
RvdK

Ce n'est pas possible

De MSDN :

Le mot clé const est utilisé pour modifier la déclaration d'un champ ou d'une variable locale.

Puisque vous ne pouvez avoir qu'un champ ou une variable locale dans une classe, cela signifie que vous ne pouvez pas avoir un const global. (c'est-à-dire const d'espace de noms)

11
Oded

Non, il n'y en a pas. Mettez-le dans une classe statique ou une énumération.

2
svinto

Vous pouvez utiliser les constantes dans vos autres classes si vous ajoutez également "Utilisation de la statique":

using static MyNameSpace.MyGlobals;

namespace MyNameSpace {
    public static class MyGlobals{
        public const bool SAVE_LOGSPACE = true;
        public static readonly DateTime BACKTEST_START_DATE = new DateTime(2019,03,01);
}
1
MrCalico