C#语言中的枚举应用

作者:微信公众号:【架构师老卢】
2-6 15:29
22

概述:在 C# 编程状态下,枚举是枚举的缩写,是一种功能强大且用途广泛的功能,可简化代码的可读性和组织。枚举提供了一种结构化的方式来定义一组命名的整数常量,允许开发人员在其代码中表示一组有限的不同值。这些命名常量通过用有意义的标识符替换幻数或任意字符串来增强代码的清晰度,使其更具表现力和维护性。C# 中的枚举有多种用途,例如通过将变量值限制为预定义的集来提高代码的可靠性,使代码更具自文档化,以及通过集中定义可能值来增强代码维护。本简介深入探讨了 C# 中枚举的基础知识,探讨了它们的语法、用例以及它们为开发过程带来的优势。无论您是新手程序员还是经验丰富的开发人员,了解 C# 中的枚举对于编写干净、高效

在 C# 编程状态下,枚举是枚举的缩写,是一种功能强大且用途广泛的功能,可简化代码的可读性和组织。枚举提供了一种结构化的方式来定义一组命名的整数常量,允许开发人员在其代码中表示一组有限的不同值。这些命名常量通过用有意义的标识符替换幻数或任意字符串来增强代码的清晰度,使其更具表现力和维护性。

C# 中的枚举有多种用途,例如通过将变量值限制为预定义的集来提高代码的可靠性,使代码更具自文档化,以及通过集中定义可能值来增强代码维护。本简介深入探讨了 C# 中枚举的基础知识,探讨了它们的语法、用例以及它们为开发过程带来的优势。无论您是新手程序员还是经验丰富的开发人员,了解 C# 中的枚举对于编写干净、高效和可维护的代码至关重要。

C# 中的枚举是一项强大的功能,可用于定义一组命名的整型常量。虽然枚举本身非常有用,但您可以使用多种技术和最佳实践在功能、可读性和可维护性方面将它们提升到一个新的水平。以下是一些提示:

flags 属性

如果枚举表示一组标志,请考虑使用该属性。这允许您使用按位 OR 运算组合枚举值,使其更加通用。[Flags]

[Flags]  
public enum FileAccessEnum  
{  
    Read = 1,  
    Write = 2,  
    Execute = 4  
}

FileAccessEnum _FileAccessEnum = FileAccessEnum.Read | FileAccessEnum.Write;  
Console.WriteLine(_FileAccessEnum);

输出

Read, Write

字符串表示形式

通过使用属性或自定义方法改进枚举值的字符串表示形式。Description

public enum Status  
{  
    [Description("Active Status")]  
    Active,  
    [Description("Inactive Status")]  
    Inactive,  
    [Description("Pending Status")]  
    Pending,  
    [Description("InProgress Status")]  
    InProgress,  
}

var _StatusDes = GetDescriptions<Status>();  
foreach (var item in _StatusDes)  
{  
    Console.WriteLine(item);  
}

输出

Active Status
Inactive Status
Pending Status
InProgress Status

数值

为枚举成员分配显式数值,以便更好地控制其值。

public enum WeekDays  
{  
    Sunday = 1,  
    Monday = 2,  
    Tuesday = 3,  
    Wednesday = 4,  
    Thursday = 5,  
    Friday = 6,  
    Saturday = 7,  
}
foreach (var item in Enum.GetValues(typeof(WeekDays)))  
{  
    Console.WriteLine($"{item} == {(int)item}");  
}

输出

Sunday == 1
Monday == 2
Tuesday == 3
Wednesday == 4
Thursday == 5
Friday == 6
Saturday == 7

枚举扩展方法

创建扩展方法以向枚举添加功能。

 public static bool IsInProcess(this Status status)  
 {  
     return status == Status.Pending || status == Status.InProgress;  
 }
 
 var orderStatus = Status.Pending;  
Console.WriteLine(orderStatus.IsInProcess());

输出

True

使用枚举提高可读性

使用枚举通过替换幻数或字符串来提高代码的可读性。

public enum LogLevel  
{  
    Info,  
    Warning,  
    Error  
}
Console.WriteLine(LogLevel.Error + ": An error occurred");

输出

Error: An error occurred

可为 null 的枚举

通过在枚举类型后添加问号,使枚举可为 null。

 public enum TrafficLight  
 {  
     Red,  
     Yellow,  
     Green  
 }
 TrafficLight? currentLight = null;

这些做法可以帮助你充分利用 C# 中枚举的全部潜力,使你的代码更具表现力和可维护性。选择适合您的特定用例的技术,并提高代码的可读性和功能。

完整程序

using static EnumsExample.Helper;  
  
FileAccessEnum _FileAccessEnum = FileAccessEnum.Read | FileAccessEnum.Write;  
Console.WriteLine(_FileAccessEnum);  
  
var _StatusDes = GetDescriptions<Status>();  
foreach (var item in _StatusDes)  
{  
    Console.WriteLine(item);  
}  
  
foreach (var item in Enum.GetValues(typeof(WeekDays)))  
{  
    Console.WriteLine($"{item} == {(int)item}");  
}  
  
var orderStatus = Status.Pending;  
Console.WriteLine(orderStatus.IsInProcess());  
  
Console.WriteLine("An error occurred", LogLevel.Error);  
  
// Nullable enum  
TrafficLight? currentLight = null;

输出

C# 中的枚举是一种有价值的工具,它极大地提高了代码的清晰度、健壮性和可维护性。通过封装命名常量集,枚举使开发人员能够创建更具可读性和不言自明的代码,从而降低出错的可能性并增强对软件的整体理解。定义一组有限且定义明确的值的能力不仅简化了开发过程,而且通过在代码库中建立通用语言来促进团队成员之间的协作。

枚举在提高代码质量方面发挥着至关重要的作用,它消除了不明确的数字或字符串文字的使用,并用传达每个常量用途的有意义的符号替换它们。此外,枚举通过允许开发人员在不影响现有代码的情况下添加新值来增强代码的可扩展性,从而促进模块化和可扩展的设计。

随着开发人员继续利用 C# 中枚举的强大功能,他们解锁了一种通用机制,用于创建更易于维护、更健壮和更具表现力的软件。枚举具有简化代码、增强可读性和强制执行约束的能力,是 C# 编程不可或缺的组成部分,有助于创建高效可靠的应用程序。

相关留言评论
昵称:
邮箱:
阅读排行