【问题标题】:Assigning (non)constant value to enum为枚举分配(非)常量值
【发布时间】:2010-11-01 10:20:33
【问题描述】:

我正在尝试为这样的枚举分配一个短:;

public enum ValueRepresentation : short
{
   ApplicationEntity = short.Parse("AE"),
   AgeString = short.Parse("AS")
}

然而,这显然是行不通的。但是有没有快速的解决方法来完成这项工作?

干杯

【问题讨论】:

    标签: c# enums constants variable-assignment


    【解决方案1】:

    没有。枚举值始终是编译时常量。如果您希望它们是通过运行代码创建的值,则必须自动生成源代码。

    (究竟如何解析“AS”?)

    当然,另一种选择是不使用枚举。对于您正在尝试做的事情,它们可能不是最合适的解决方案。

    【讨论】:

      【解决方案2】:

      正如 Jon 所说,这行不通,而您可能需要自动生成。

      如果您有这些值的列表,例如“AE”、“AS”等,请查看 t4 模板(Visula Studio 的一部分),编写一个简单的模板来循环遍历您的列表和吐出正确的枚举代码。

      MSDN 文档在这里:http://msdn.microsoft.com/en-us/library/bb126445.aspx

      我还发现 Oleg SYch 的博客很有帮助:http://www.olegsych.com/2007/12/text-template-transformation-toolkit/

      如果可能,我还建议使用 VS2010,它对 t4 的支持非常好,但如果不是,它们在 VS2008 下仍然可以正常工作。

      【讨论】:

        【解决方案3】:

        如果您希望枚举具有短值,请以通常的方式将枚举声明为关联值并将枚举转换为短值或将短值转换为枚举:

                public enum ValueRepresentation
            {
                AE =1,
                AS = 2
            }
        
            private short AsShort(ValueRepresentation value)
            {
                return (short)value;
            }
            private ValueRepresentation ShortAsValue(short number)
            {
                return (ValueRepresentation)number;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-09-20
          • 2016-11-18
          • 1970-01-01
          • 2021-10-21
          • 1970-01-01
          • 1970-01-01
          • 2014-09-26
          相关资源
          最近更新 更多