在 C# 中,常量是一种固定不变的值,一旦被赋值就不能再被修改。常量的定义使用 const
关键字。
C#public const int MaxItemCount = 100;
C#int itemCount = MaxItemCount; // 使用常量
// MaxItemCount = 200; // 不能修改常量的值,这里会导致编译错误
枚举是一种用户自定义的数据类型,用于定义一组命名的常量。在 C# 中,枚举使用 enum
关键字进行定义。
C#public enum WeekDay
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
C#static void Main(string[] args)
{
WeekDay today = WeekDay.Monday; // 使用枚举
int dayValue = (int)WeekDay.Tuesday; // 获取枚举成员的整数值
WeekDay nextDay = (WeekDay)(dayValue + 1); // 通过整数值转换为枚举成员
Console.WriteLine(today);
Console.WriteLine(dayValue);
Console.WriteLine(nextDay);
Console.ReadKey();
}
C#public enum WeekDay
{
[Description("星期一")]
Monday,
[Description("星期二")]
Tuesday,
[Description("星期三")]
Wednesday,
[Description("星期四")]
Thursday,
[Description("星期五")]
Friday,
[Description("星期六")]
Saturday,
[Description("星期日")]
Sunday
}
C#static void Main(string[] args)
{
// 使用示例
WeekDay day = WeekDay.Monday;
string description = GetDescription(day); // 将返回 "星期一"
Console.WriteLine(description);
Console.ReadKey();
}
public static string GetDescription(Enum value)
{
var field = value.GetType().GetField(value.ToString());
var attribute = field.GetCustomAttribute<DescriptionAttribute>();
return attribute?.Description ?? value.ToString();
}
通过使用特性(Attribute),可以为枚举成员添加描述信息,便于在程序中进行显示或者其他处理。
C#[Flags]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
C#static void Main(string[] args)
{
// 创建组合标志
Days meetingDays = Days.Monday | Days.Wednesday | Days.Friday;
Console.WriteLine(meetingDays); // Monday, Wednesday, Friday
// 检查是否包含某天
bool hasMondayMeeting = meetingDays.HasFlag(Days.Monday); // 返回 true
Console.WriteLine(hasMondayMeeting); // true
// 添加一天
meetingDays |= Days.Thursday;
Console.WriteLine(meetingDays); // Thursday, Monday, Wednesday, Friday
}
标志枚举用于表示一个或多个枚举成员的组合,通过位运算进行操作。
常量和枚举是 C# 中非常有用的数据类型,能够帮助开发者在程序中定义和使用固定的常量值和命名的常量集合。合理地使用常量和枚举,可以提高代码的可读性、可维护性和可扩展性,是 C# 程序设计中的重要组成部分。
在实际应用中,开发者应当根据具体的业务需求和设计规范,合理使用常量和枚举,并充分了解其特性和高级用法,以便更好地发挥它们的作用。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!