我真的很想念C#中的C #define
;在C##define引用说:
#define指令不能用于按原样声明常量值 通常用C和C ++完成。 C#中的常量最好定义为 类或结构的静态成员。如果你有几个这样的 常量,考虑创建一个单独的“常量”类来保存 它们。
所以我想要这样的东西:
class Constants {
public static const int UP=0, DOWN=1, LEFT=2, RIGHT=3;
...
}
class Foo {
public Foo(int dir) {
// import Constants scope here (and some other classes) somehow
if(dir==UP) ...
// ...because this is far worse readable
if(dir==Constants.UP)
}
}
有可能吗?如果是,怎么样?
答案 0 :(得分:2)
我建议您不要将常量这样的通用词用于包含所有常量的类。因为它没有给出常量的任何上下文。而且我不建议将所有常量保留在一个类中。为每组相关常量创建小上下文。并为每个小上下文指定适当的名称。
有一种很好的方法可以在一个上下文中对相关的命名常量进行分组 - 枚举。因此,为方向常量创建枚举,并为该枚举提供描述性名称:
public enum MoveDirection
{
Up,
Down,
Left,
Right
}
现在Up
不是Pixar Movie - 它的移动方向:
switch(direction)
{
case MoveDirection.Up:
// ...
}
答案 1 :(得分:0)
您可能希望使用枚举(http://msdn.microsoft.com/en-us/library/sbbt4032.aspx)。
public enum Something
{
UP=1,
DOWN=2,
....
}
然后你可以像我们一样。
if(dir==Something.UP)
答案 2 :(得分:0)
将它置于代码之上:
using UP = Constants.UP;
然后你就可以使用
了if (dir == UP) ...