我有什么方法可以在运行时更改enum
值?
例如我有以下类型
enum MyType
{
TypeOne, //=5 at runtime
TypeTwo //=3 at runtime
}
我希望在运行时将设置5设置为TypeOne
,将3设置为TypeTwo
。
答案 0 :(得分:7)
请参阅MSDN帮助HERE
另外HERE
在强健规划部分 - 与任何常量一样,对枚举的各个值的所有引用都在编译时转换为数字文字。
因此,您需要重新调整Enum
的想法并相应地使用它。
回答你的问题 - 不,这是不可能的。
答案 1 :(得分:7)
正如其他人所指出的,答案是否定的。
然而,您可能会重构代码以改为使用类:
public sealed class MyType
{
public int TypeOne { get; set; }
public int TypeTwo { get; set; }
}
...
var myType = new MyType { TypeOne = 5, TypeTwo = 3 };
或该主题的变体。
答案 2 :(得分:0)
枚举被编译为常量静态字段,它们的值被编译到汇编中,所以不可以,它们无法更改它们。 (它们的常量值甚至可以编译到您引用它们的位置。)
例如,请使用此枚举:
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);