【问题标题】:How can I assign an enum to a variable?如何将枚举分配给变量?
【发布时间】:2016-04-13 17:57:50
【问题描述】:
我想简化对枚举的引用:
class Order
{
enum OrderStatus{open,cancelled, onHold}
}
与此等价的东西:
class SomeOtherClass
{
// assign enum to a simpler name
enum Status = Order.OrderStatus
public void foo(){
// so the reference is simpler, rather than Order.OrderStatus.open
Console.Write(Status.open);
}
}
关于如何做到这一点的任何想法?
【问题讨论】:
标签:
c#
enums
variable-assignment
【解决方案1】:
首先,你必须将枚举公开,以便在类外可见:
class Order
{
public enum OrderStatus { open, cancelled, onHold }
}
然后你可以为它分配一个别名以便于访问
// give an alias
using Status = Order.OrderStatus;
class SomeOtherClass
{
public void foo(){
// reference is now simpler, rather than Order.OrderStatus.open
Console.Write(Status.open);
}
}
【解决方案2】:
我建议额外使用 Enum,并在您需要的任何地方使用/重用它,如下所示:
public enum OrderStatus
{
open,
cancelled,
onHold
}
class SomeOtherClass
{
private OrderStatus Status;
public void foo(){
// so the reference is simpler, rather than Order.OrderStatus.open
Console.Write(Status.open);
}
}
如果订单是“SomeOtherClass”的一部分并且在此处相关,请在构造函数中将其转发并在 foo() 方法中对工作流有效。
【解决方案3】:
您可以使用别名指令将其缩短一点。这需要写在与您的 SomeOtherClass 相同的命名空间中。
using OrderStatus = Order.OrderStatus;
【解决方案4】:
您可以将此语句放在源代码文件的顶部。
using Status = Order.OrderStatus;
当心,如果您已在名为 ConsoleApplication 的命名空间中声明了您的 Order 类,则必须在 Order 之前预先结束它。
using Status = ConsoleApplication.Order.OrderStatus;