C# 在C中设置运行时的枚举值#
是否有任何方法可以在运行时更改C# 在C中设置运行时的枚举值#,c#,enums,runtime,C#,Enums,Runtime,是否有任何方法可以在运行时更改enum值 e、 我有以下类型 enum MyType { TypeOne, //=5 at runtime TypeTwo //=3 at runtime } 我希望在运行时将5设置为TypeOne,将3设置为TypeTwo枚举编译为常量静态字段,它们的值编译到程序集中,因此不可能更改它们。(它们的常量值甚至可以编译到引用它们的位置。) 例如,以这个枚举为例: enum foo { Value = 3 } 然后您可以获得字段及其信息,如
enum
值
e、 我有以下类型
enum MyType
{
TypeOne, //=5 at runtime
TypeTwo //=3 at runtime
}
我希望在运行时将5设置为
TypeOne
,将3设置为TypeTwo
枚举编译为常量静态字段,它们的值编译到程序集中,因此不可能更改它们。(它们的常量值甚至可以编译到引用它们的位置。)
例如,以这个枚举为例:
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);
请参阅MSDN帮助
- 枚举类型(也称为枚举或枚举)提供了一种有效的方法来定义可分配给变量的一组命名整数常量
Enum
的概念,并相应地使用它
回答你的问题-不,这是不可能的。正如其他人所指出的,答案是否定的 但是,您可能会重构代码以使用类:
public sealed class MyType
{
public int TypeOne { get; set; }
public int TypeTwo { get; set; }
}
...
var myType = new MyType { TypeOne = 5, TypeTwo = 3 };
或者这个主题的变体。这是不可能的。你为什么还要这个呢?+1我不理解那些倒下的选民。不要否决该问题,因为答案是“否”。向上投票,答案是“否”。不正确,它们被编译为常量,而不是静态字段。@DavidG我添加了示例代码。他们的工作方式和田地完全一样。常量也作为字段实现。