我有一个c#程序,我有一些常量变量,我想在整个程序中访问它。我不需要在任何时候改变它们。
我尝试过静态类,效果很好。我宣布了一个静态班级'并将我的变量放在公共静态'中。
当我想在case语句中使用这些不变的变量时出现了问题。由于这只接受了有效性,因此效果不佳。
问题是这样的:如果我有一个静态类,其中没有静态变量,那么这也能正常工作吗?这是从public static
到public const
。
感谢您的帮助。
答案 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)
}