[英]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 };
或该主题的变化。
枚举被编译为常量静态字段,它们的值被编译到汇编中,所以不,它们不可能更改它们。 (它们的常量值甚至可以编译到您引用它们的位置。)
举这个枚举:
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.