首頁 > 後端開發 > C++ > 為什麼 C# 允許非唯一枚舉值,我應該使用結構體嗎?

為什麼 C# 允許非唯一枚舉值,我應該使用結構體嗎?

Patricia Arquette
發布: 2024-12-30 17:56:09
原創
170 人瀏覽過

Why Does C# Allow Non-Unique Enum Values, and Should I Use a Struct Instead?

非唯一枚舉值

問題:

在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;
}
登入後複製

因為包含多個具有相同值的常數的類型沒有問題,使用非唯一值定義枚舉是允許的。但是,它有一些警告:

  1. 非唯一值: 當轉換為具有非唯一值的枚舉時,分配給枚舉的第一個值將是回來了。這可能與預期值不一致。
  2. 相等比較:比較非唯一枚舉值可能會導致意外結果。使用問題中的範例,紅色和綠色都代表值 1,因此將紅色與綠色進行比較將傳回 true,儘管它們存在固有差異。

雖然使用非唯一枚舉值在技術上是合法的,一般不鼓勵。相反,請考慮使用結構,它允許您定義具有唯一值的明確成員。但是,與枚舉相比,結構可能具有更高的記憶體開銷,因此請根據您的要求明智地使用它們。

以上是為什麼 C# 允許非唯一枚舉值,我應該使用結構體嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板