欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 中實現枚舉(enum)的幾種示例

admin
2024年11月16日 20:29 本文熱度 487

前言

在 .NET 框架中,主要包括值類型、引用類型等,在某些情況下,我們需要用可讀性強的符號名稱,代替硬編碼的數值。從而提高代碼可讀性。在 C# 中,可以是使用枚舉的值類型來實現,本文將了解枚舉實現的幾種示例。

枚舉(Enum)

1、概述

枚舉(enum)是.NET 提供的一種值類型,由一組可以命名常量定義整型數值類型的一種方法。由基礎整數值類型的一組命名常量組成。枚舉常用于多項選擇的場景,如表示一周中的一天、訂單狀態(待支付、已支付、已完成)、用戶狀態(激活、凍結、已刪除)等

C# 使用關鍵字 enum 定義枚舉成員的名稱,語法如下面代碼:

public enum EnumName{}

2、特點

  • 增強可讀性與可維護性:由于枚舉允許對整型常量使用描述性名稱,從而使用的代碼更清晰、可讀性也更強。

  • 確保類型安全性:枚舉可以在編譯期間提供類型安全性,將值分配給該枚舉類型的預定義常量集中的變量。

  • 編譯器對類型檢查:編譯器可對枚舉值進行類型檢查,確保僅使用有效的枚舉常量。

  • 支持智能感知:在使用集成開發環境時,可通過智能感知查看可用枚舉值及其描述的列表。

  • 與switch結合使用:枚舉非常適合與 switch 語句一起使用,從而能夠創建更簡潔、更結構化的代碼來處理多個情況。

  • 降低錯誤風險:由于枚舉常量在編譯期間會得到驗證,因此降低了因拼寫錯誤或值不正確而導致錯誤的可能性。

3、優勢

  • 枚舉是一組預先確定的常量組;

  • 使用枚舉可增強類型安全性;

  • 枚舉可以迭代;

?

注意:在枚舉中,分配給其成員的數值可以屬于任何整數數據類型,如 byte、int、short、long、ushort等。默認情況下,枚舉成員為 int 類型。

示例

1、 定義枚舉類型,未對枚舉的成員分配任何值時,則默認為第一個成員分配值0,其后成員值將遞增1。

public enum UserStatus{    /// <summary>    /// 活動    /// </summary>    Activity,    /// <summary>    /// 已阻止    /// </summary>    Blocked,    /// <summary>    /// 已刪除    /// </summary>    Deleted,    /// <summary>    /// 不活動    /// </summary>    Inaction}

2、 定義枚舉類型時,顯式為成員分配整數值。

public enum UserStatus{    /// <summary>    /// 活動    /// </summary>    Activity=1,    /// <summary>    /// 已阻止    /// </summary>    Blocked=2,    /// <summary>    /// 已刪除    /// </summary>    Deleted=3,    /// <summary>    /// 不活動    /// </summary>    Inaction=4}

3、為每個成員分配各種值時,修改 enum 成員的默認值將導致其他成員按順序自動分配增量值

public enum UserStatus{    /// <summary>    /// 活動    /// </summary>    Activity,     // =0    /// <summary>    /// 已阻止    /// </summary>    Blocked,    // =1    /// <summary>    /// 已刪除    /// </summary>    Deleted=5,    /// <summary>    /// 不活動    /// </summary>    Inaction  // =6}

4、為枚舉的每個成員分配不同的值

public enum UserStatus{    /// <summary>    /// 活動    /// </summary>    Activity,     // =0    /// <summary>    /// 已阻止    /// </summary>    Blocked,    // =1    /// <summary>    /// 已刪除    /// </summary>    Deleted=5,    /// <summary>    /// 不活動    /// </summary>    Inaction  // =6}

5、與 switch 語句組合使用

namespace Fountain.WinConsole.EnumDemo{    internal class Program    {        static void Main(string[] args)        {            UserStatus userStatus = UserStatus.Activity;            switch (userStatus)            {                case UserStatus.Activity:                    break;                case UserStatus.Inaction:                    break;                case UserStatus.Deleted:                    break;                default:                    break;            }            Console.ReadKey();        }    }}

6、使用 GetNames 方法遍歷所有值

namespace Fountain.WinConsole.EnumDemo{    internal class Program    {        static void Main(string[] args)        {            foreach (string enumName in Enum.GetNames(typeof(UserStatus)))            {                Console.WriteLine(enumName);            }            Console.ReadKey();        }    }}
// 輸出結果ActivityBlockedDeletedInaction

7、使用 GetValues 方法遍歷所有值

namespace Fountain.WinConsole.EnumDemo{    internal class Program    {        static void Main(string[] args)        {            foreach (UserStatus status in Enum.GetValues(typeof(UserStatus)))            {                Console.WriteLine(status.ToString());            }            Console.ReadKey();        }    }}// 輸出結果ActivityBlockedDeletedInaction

8、在枚舉類型的定義中包含典型組合

使用枚舉類型表示選項的組合,需將每個選項的枚舉成員定義為位字段,且關聯值應該是2的冪。然后可以使用按位邏輯運算符組合選擇或交叉選擇組合。聲明枚舉類型的位域,需使用Flags屬性。
namespace Fountain.WinConsole.EnumDemo{    internal class Program    {        static void Main(string[] args)        {            UserStatus userStatus = UserStatus.Blocked | UserStatus.Deleted | UserStatus.Inaction;            // 輸出 Blocked Deleted Inaction            Console.WriteLine($"不可用狀態{userStatus}");
           UserStatus invalidStatus = UserStatus.Blocked | UserStatus.Inaction;            // 輸出 Blocked Inaction            Console.WriteLine($"受阻或不活動的 {invalidStatus}");
           Console.ReadKey();        }    }
   [Flags]    public enum UserStatus    {        /// <summary>        /// 活動        /// </summary>        Activity= 0b_0000_0000, // 0        /// <summary>        /// 已阻止        /// </summary>        Blocked= 0b_0000_0001, // 1        /// <summary>        /// 已刪除        /// </summary>        Deleted= 0b_0000_0010, // 2        /// <summary>        /// 不活動        /// </summary>        Inaction= 0b_0000_0100 //4    }}

9、使用屬性向枚舉值添加說明【.NET Framework 4.7 以上】

using System.ComponentModel;
namespace Fountain.WinConsole.EnumDemo{    internal class Program    {        static void Main(string[] args)        {            UserStatus status = UserStatus.Deleted;            var field = status.GetType().GetField(status.ToString());            var attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute));            string attributeName = attribute == null ? status.ToString() : attribute.Description;            // 輸出已刪除            Console.WriteLine(attributeName);            //            Console.ReadKey();        }    }
   public enum UserStatus    {        /// <summary>        /// 活動        /// </summary>        [Description("活動")]        Activity,        /// <summary>        /// 已阻止        /// </summary>        [Description("已阻止")]        Blocked,        /// <summary>        /// 已刪除        /// </summary>        [Description("已刪除")]        Deleted,        /// <summary>        /// 不活動        /// </summary>        [Description("不活動")]        Inaction    }}

小結

以上是枚舉的八種示例,希望本文對您有所收獲,如有不到之處,請多多包涵。


該文章在 2024/11/18 9:07:18 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved