簡體   English   中英

在C#中設置運行時的枚舉值

[英]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 };

或該主題的變化。

這里只需參考MSDN幫助

  • 枚舉類型(也稱為枚舉或枚舉)提供了一種有效的方法來定義可以分配給變量的一組命名的整數常量。

還在這里

在強健編程部分 - 與任何常量一樣,對枚舉的各個值的所有引用在編譯時都轉換為數字文字。

因此,您需要重新調整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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM