静态变量应该用枚举替换吗?

Spo*_*ike 13 c# enums static-members

所以我查看了一些已签入的代码,我对此感到困惑:

// Amount of days before cancellation can't be done
enum Cancellation { Limit = 2 };
Run Code Online (Sandbox Code Playgroud)

询问检查它的人他认为使用枚举而不是静态变量要好得多,比这更好:

private static int CANCELLATION_LIMIT = 2;
Run Code Online (Sandbox Code Playgroud)

所以我们开始争论.我的论点是他使用枚举作为存储值的方法(如果有两个具有相同值的枚举符号,它将会中断).他认为在类中使用静态变量是反模式.

我的问题是应该采用哪种最佳做法?

ann*_*ata 12

返回"它在逻辑上是一组值"吗?"枚举是合适的":"静态const很好"

(我是逻辑上一致的忠实粉丝)


Fre*_*els 8

枚举是键入的.

也就是说,如果你有一个方法,你必须将某个'状态'传递给一个方法,你只能传递'有效'参数.例如:

enum OrderState 
{
  pending = 1,
  shipped = 2
}

public IList<Order> GetOrdersInState( OrderState )
{
}
Run Code Online (Sandbox Code Playgroud)

这是一个很好的例子 - 使用枚举的方式.当OrderState是一个为其创建2个const整数的int时,您没有限制并且能够传递无效值.编译器不会抱怨.

但是,你提出的情况,我认为使用枚举不是一个有效的解决方案.使用int是一种误用,应该使用const int.

枚举很好,但应该在必须使用的地方使用.在任何情况下,它们都不是首选工具.在这种情况下,使用const或static var不是反模式.