[英]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.