2010-05-12 40 views
43

有什么办法可以为整个命名空间定义一个常量,而不仅仅是在一个类中?例如:C中的命名空间常量#

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

    static class Program 
    { 
    } 
} 

给出一个编译错误如下:

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

+13

注意, “恒定变量” 是一个矛盾。变量有所不同,这就是为什么他们被称为“变量”。常数保持不变,这就是为什么他们被称为常量。变量是存储位置*,常量是*值*。他们完全不同;不可能有这样的“常量变量”。 – 2010-05-12 14:14:37

+0

好点 - 更正 – 2010-05-12 14:48:54

回答

78

我相信这是不可能的。但是你可以用常量创建一个类。

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

,然后用它像

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

+1,因为这是微软推荐的方法http://msdn.microsoft.com/en-us/library/bb397677.aspx – Bryan 2010-05-12 11:41:22

+1

另外,另一种实现方法是使用web.config或app.config(取决于你拥有哪一个)。 https://stackoverflow.com/a/4256864/105539 – Volomike 2017-10-17 00:05:18

11

这是不可能的

MSDN

const使用关键字修改字段或局部变量的声明。

因为你只能有一个类中的一个字段或局部变量,这意味着你不能有一个全球性的const。 (即命名空间常量)

2

不,没有。把它放在静态类或枚举中。