我真的很想念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)
}
}
可能吗?如果是,如何?
我建议你不要使用像常量这样的通用词来表示保存所有常量的类。因为它没有为您拥有的常量提供任何上下文。而且我不建议将所有常量保留在一个类中。为每组相关常量创建小型上下文。并为每个小上下文指定适当的名称。
有一个很好的方法可以在一个上下文中对相关的命名常量进行分组 - 枚举。因此,为方向常量创建枚举,并为该枚举指定描述性名称:
public enum MoveDirection
{
Up,
Down,
Left,
Right
}
现在Up
不是皮克斯电影——它的移动方向:
switch(direction)
{
case MoveDirection.Up:
// ...
}
希望使用枚举 (http://msdn.microsoft.com/en-us/library/sbbt4032.aspx)。
public enum Something
{
UP=1,
DOWN=2,
....
}
然后你可以喜欢我们。
if(dir==Something.UP)
把它放在你的代码之上:
using UP = Constants.UP;
然后,您将能够使用
if (dir == UP) ...