在C#中的运行时设置枚举值
本文关键字:设置 枚举 运行时 | 更新日期: 2023-09-27 18:29:41
有什么方法可以在运行时更改enum
值吗?
我有以下类型的
enum MyType
{
TypeOne, //=5 at runtime
TypeTwo //=3 at runtime
}
我希望在运行时将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帮助HERE
- 枚举类型(也称为枚举或枚举)提供了一种有效的方法来定义可以分配给变量的一组命名积分常数
也在这里
在鲁棒编程部分-与任何常量一样,对枚举的各个值的所有引用都会在编译时转换为数字文本。
因此,你需要重新调整你对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);