C# 如何拥有程序范围的常量变量

C# 如何拥有程序范围的常量变量,c#,C#,我有一个c#程序,我有一些常量变量,我希望在整个程序中都可以访问。我在任何时候都不需要改变它们 我尝试了一个静态类,效果很好。我声明了一个“static类”,并将我的变量作为“publicstatic”放在里面 当我想在case语句中使用这些不变的变量时,问题就出现了。因为这只接受常量,所以效果不太好 问题是:如果我有一个静态类,它里面没有静态变量,那么它也可以工作吗?这是从public static到public const 谢谢您的帮助。是的,常量默认为静态是的,常量默认为静态视情况而定。常

我有一个c#程序,我有一些常量变量,我希望在整个程序中都可以访问。我在任何时候都不需要改变它们

我尝试了一个静态类,效果很好。我声明了一个“static类”,并将我的变量作为“publicstatic”放在里面

当我想在case语句中使用这些不变的变量时,问题就出现了。因为这只接受常量,所以效果不太好

问题是:如果我有一个静态类,它里面没有静态变量,那么它也可以工作吗?这是从
public static
public const


谢谢您的帮助。

是的,
常量默认为
静态
是的,
常量默认为
静态
视情况而定。常量不能是变量,它们必须是文本。如果您试图将一个变量分配给const,比如您创建的类,那么必须将其保持为静态只读。如果您想分配一个文本,比如一个数字或一个字符串,那么const就可以了

举几个例子:

public const int Number = 1; // this works; 1 is a literal
public const int Number = SomeClass.SomeProperty; // this does not work
public const int Number = SomeClass.SomeConst; // this works

public const SomeClass Var = new SomeClass(); // does not work
public const string Var = "test"; // this works as "test" is a literal.
如果您不使用文字,则最好执行以下操作:

public static readonly SomeClass Var = new SomeClass ();
如果您使用的是数字文本,另一个选项是enum,它基本上是一个静态类,具有一些附加功能

public enum MyConstants
{
    VarOne, // defaults to 0
    VarTwo, // defaults to next number (1)
    VarThree // defaults to next number (2)
}

视情况而定。常量不能是变量,它们必须是文本。如果您试图将一个变量分配给const,比如您创建的类,那么必须将其保持为静态只读。如果您想分配一个文本,比如一个数字或一个字符串,那么const就可以了

举几个例子:

public const int Number = 1; // this works; 1 is a literal
public const int Number = SomeClass.SomeProperty; // this does not work
public const int Number = SomeClass.SomeConst; // this works

public const SomeClass Var = new SomeClass(); // does not work
public const string Var = "test"; // this works as "test" is a literal.
如果您不使用文字,则最好执行以下操作:

public static readonly SomeClass Var = new SomeClass ();
如果您使用的是数字文本,另一个选项是enum,它基本上是一个静态类,具有一些附加功能

public enum MyConstants
{
    VarOne, // defaults to 0
    VarTwo, // defaults to next number (1)
    VarThree // defaults to next number (2)
}

你试过了吗?是的,它也能用。
static
const
不要相互排斥。您只需使用
public const
,它将自动成为静态的。当然,这取决于财产的类型
const
只能是编译时常量,如整数或浮点值和字符串,但不能是需要构造的对象。@harold yes在发布后意识到了这一点,并编辑了我的注释。“常量”“变量”,是指常量还是变量?使它们全球化是一回事,但一定要使用正确的术语来获得最佳帮助。您尝试过吗?是的,它也同样有效。
static
const
不要相互排斥。您只需使用
public const
,它将自动成为静态的。当然,这取决于财产的类型
const
只能是编译时常量,如整数或浮点值和字符串,但不能是需要构造的对象。@harold yes在发布后意识到了这一点,并编辑了我的注释。“常量”“变量”,是指常量还是变量?使他们全球化是一回事,但一定要使用正确的术语来获得最好的帮助。