C#中的命名空间常量

Pau*_*els 53 c# namespaces const

有没有办法为整个命名空间定义一个常量,而不仅仅是在一个类中?例如:

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

    static class Program
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

给出如下编译错误:

预期的类,委托,枚举,接口或结构

Rvd*_*vdK 91

我相信这是不可能的.但是你可以创建一个只有常量的类.

public static class GlobalVar
{
    public const string MY_CONST = "Test";
}
Run Code Online (Sandbox Code Playgroud)

然后像使用它一样

class Program
{
    static void Main()
    {
        Console.WriteLine(GlobalVar.MY_CONST);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1这是微软推荐的方法http://msdn.microsoft.com/en-us/library/bb397677.aspx (16认同)

Ode*_*ded 11

这是不可能的

来自MSDN:

常量关键字用于修改字段或局部变量的声明.

由于您只能在类中拥有字段或局部变量,这意味着您不能拥有全局变量const.(即命名空间const)


小智 7

如果您也添加“使用静态”,则可以在其他类中使用常量:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)