狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 中實(shí)現(xiàn)枚舉(enum)的幾種示例

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

前言

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

枚舉(Enum)

1、概述

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

C# 使用關(guān)鍵字 enum 定義枚舉成員的名稱,語(yǔ)法如下面代碼:

public enum EnumName{}

2、特點(diǎn)

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

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

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

  • 支持智能感知:在使用集成開(kāi)發(fā)環(huán)境時(shí),可通過(guò)智能感知查看可用枚舉值及其描述的列表。

  • 與switch結(jié)合使用:枚舉非常適合與 switch 語(yǔ)句一起使用,從而能夠創(chuàng)建更簡(jiǎn)潔、更結(jié)構(gòu)化的代碼來(lái)處理多個(gè)情況。

  • 降低錯(cuò)誤風(fēng)險(xiǎn):由于枚舉常量在編譯期間會(huì)得到驗(yàn)證,因此降低了因拼寫(xiě)錯(cuò)誤或值不正確而導(dǎo)致錯(cuò)誤的可能性。

3、優(yōu)勢(shì)

  • 枚舉是一組預(yù)先確定的常量組;

  • 使用枚舉可增強(qiáng)類型安全性;

  • 枚舉可以迭代;

?

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

示例

1、 定義枚舉類型,未對(duì)枚舉的成員分配任何值時(shí),則默認(rèn)為第一個(gè)成員分配值0,其后成員值將遞增1。

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

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

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

3、為每個(gè)成員分配各種值時(shí),修改 enum 成員的默認(rèn)值將導(dǎo)致其他成員按順序自動(dòng)分配增量值

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

4、為枚舉的每個(gè)成員分配不同的值

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

5、與 switch 語(yǔ)句組合使用

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();        }    }}
// 輸出結(jié)果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();        }    }}// 輸出結(jié)果ActivityBlockedDeletedInaction

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

使用枚舉類型表示選項(xiàng)的組合,需將每個(gè)選項(xiàng)的枚舉成員定義為位字段,且關(guān)聯(lián)值應(yīng)該是2的冪。然后可以使用按位邏輯運(yùn)算符組合選擇或交叉選擇組合。聲明枚舉類型的位域,需使用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($"不可用狀態(tài){userStatus}");
           UserStatus invalidStatus = UserStatus.Blocked | UserStatus.Inaction;            // 輸出 Blocked Inaction            Console.WriteLine($"受阻或不活動(dòng)的 {invalidStatus}");
           Console.ReadKey();        }    }
   [Flags]    public enum UserStatus    {        /// <summary>        /// 活動(dòng)        /// </summary>        Activity= 0b_0000_0000, // 0        /// <summary>        /// 已阻止        /// </summary>        Blocked= 0b_0000_0001, // 1        /// <summary>        /// 已刪除        /// </summary>        Deleted= 0b_0000_0010, // 2        /// <summary>        /// 不活動(dòng)        /// </summary>        Inaction= 0b_0000_0100 //4    }}

9、使用屬性向枚舉值添加說(shuō)明【.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>        /// 活動(dòng)        /// </summary>        [Description("活動(dòng)")]        Activity,        /// <summary>        /// 已阻止        /// </summary>        [Description("已阻止")]        Blocked,        /// <summary>        /// 已刪除        /// </summary>        [Description("已刪除")]        Deleted,        /// <summary>        /// 不活動(dòng)        /// </summary>        [Description("不活動(dòng)")]        Inaction    }}

小結(jié)

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


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