繁体   English   中英

在C#中设置运行时的枚举值

[英]Setting enum value at runtime in C#

有什么办法可以在运行时更改enum值吗?

例如,我有以下类型

enum MyType
{
   TypeOne, //=5 at runtime 
   TypeTwo  //=3 at runtime
}

我想在运行时将set 5设置为TypeOne ,将3设置为TypeTwo

正如其他人所指出的那样,答案是否定的。

但是,您可以重构代码以使用类:

public sealed class MyType
{
   public int TypeOne { get; set; }
   public int TypeTwo { get; set; }
}

...

var myType = new MyType { TypeOne  = 5, TypeTwo = 3 };

或该主题的变化。

这里只需参考MSDN帮助

  • 枚举类型(也称为枚举或枚举)提供了一种有效的方法来定义可以分配给变量的一组命名的整数常量。

还在这里

在强健编程部分 - 与任何常量一样,对枚举的各个值的所有引用在编译时都转换为数字文字。

因此,您需要重新调整Enum的想法并相应地使用它。

回答你的问题 - 不,这是不可能的。

枚举被编译为常量静态字段,它们的值被编译到汇编中,所以不,它们不可能更改它们。 (它们的常量值甚至可以编译到您引用它们的位置。)

举这个枚举:

enum foo
{
    Value = 3
}

然后你可以得到这个字段及其信息:

var field = typeof(foo).GetField("Value", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
Console.WriteLine(field.GetValue(null));
Console.WriteLine(field.Attributes);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM