【问题标题】: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;
        

        【讨论】:

          猜你喜欢
          • 2014-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-09
          • 2013-06-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多