如何使程序范围的常量变量

时间:2016-12-29 14:08:19

标签: c#

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

我尝试过静态类,效果很好。我宣布了一个静态班级'并将我的变量放在公共静态'中。

当我想在case语句中使用这些不变的变量时出现了问题。由于这只接受了有效性,因此效果不佳。

问题是这样的:如果我有一个静态类,其中没有静态变量,那么这也能正常工作吗?这是从public staticpublic const

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

是的,const默认为static

答案 1 :(得分:1)

这取决于。 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 ();

如果您使用的是数字文字,则另一个选项是枚举,它基本上是一个带有一些附加功能的静态类。

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