問題:
在C# 中,為什麼編譯器允許分配多個枚舉為相同的值?在這種情況下是否建議使用結構體?
答案:
C# 中的枚舉本質上是一個繼承自 System.Enum 基底類別的結構體。在幕後,枚舉值被定義為結構中的常數。例如,以下枚舉定義:
public enum Color { Red = 1, Blue = 1, Green = 1 }
相當於以下偽C# 代碼:
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
因為包含多個具有相同值的常數的類型沒有問題,使用非唯一值定義枚舉是允許的。但是,它有一些警告:
雖然使用非唯一枚舉值在技術上是合法的,一般不鼓勵。相反,請考慮使用結構,它允許您定義具有唯一值的明確成員。但是,與枚舉相比,結構可能具有更高的記憶體開銷,因此請根據您的要求明智地使用它們。
以上是為什麼 C# 允許非唯一枚舉值,我應該使用結構體嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!