如何在 C# 中比较 Enum 值?

2024 年 8 月 29 日 | 阅读 3 分钟

可以使用 Enum.CompareTo(Object) 方法将当前实例与给定对象进行比较,该方法提供相对值指示。

语法

它具有以下语法:

  • public: 它指示方法的访问级别。它表示可以从类外部访问该方法。
  • int: 它表示该方法返回一个整数值。
  • CompareTo: 方法的名称。
  • (object target): 它指示方法的参数。它接受一个对象(target)作为输入,用于将一个对象与当前对象进行比较。

返回值

  • 负整数: 当前对象小于目标对象。
  • 零: 当前对象等于目标对象。
  • 正整数: 当前对象大于目标对象。

异常

  1. ArgumentException: 当目标类型和当前实例类型不同时,会发生此异常。
  2. InvalidOperationException: 如果实例不是 SByte, Int16, Int32, Int64, Byte, UInt16, UInt32,UInt64 类型,则会发生无效操作异常。
  3. NullReferenceException: 如果实例为 null,则会引发 NullReferenceException。

示例-1

让我们举一个例子来演示如何在 C# 中比较枚举值。

输出

Comparing Monday with Wednesday: -1
Comparing Monday with Monday: 0
Comparing Friday with Wednesday: 1

说明

  • 在此示例中,此 C# 代码演示了如何使用 CompareTo 方法比较 Days 枚举的枚举值。

在 main 方法内部

  • 为枚举值 day_1、day_2、day_3 和 day_4 定义并初始化了对应于星期一、星期三和星期五的特定枚举值。
  • 使用 CompareTo 方法将 Day 1、Day 2 和 Day 4 与其他枚举值(Day 2、Day 3 和 Day 2)进行比较。
  • 比较结果显示了枚举值的相对顺序,这些结果使用 WriteLine 打印到控制台。
  • 例如,枚举定义将星期一 (day 1) 放在星期三 (day 2) 之前。因此,初始比较 (day 1 vs. day 2) 结果为负数 (-1)。
  • 由于 day_1 和 day_3 都代表星期一,因此第二次比较 (day_1 vs. day_3) 返回结果为零 (0)。
  • 由于星期五 (day 4) 在枚举规范中出现在星期三 (day 2) 之后,因此第三次比较 (day_4 vs. day_2) 返回正数 (1)。

示例-2

让我们再举一个例子来演示如何在 C# 中比较枚举值。

输出

Today and Tomorrow are both different days.
Day 1 and Day 2 are both not equal.
It's a boring weekday.

说明

此 C# 代码演示了比较枚举值的多种方法

  1. 相等比较: '==' 运算符比较两个枚举值(Today 和 Tomorrow)。它根据结果是否相同打印结果。
  2. 比较方法: Equals() 方法比较两个枚举值(day_1 和 day_2)。它确定它们是否相等并相应地打印结果。
  3. Switch 语句: 使用 switch 语句确定 chosenDay 枚举变量的值。如果选择星期六或星期日,则打印 "It's a wonderful weekend!"。否则,打印 "It's a boring weekday"

此代码作为如何在 C# 中比较枚举值的总体示例,并展示了如何通过使用相等比较、比较方法和 switch 语句根据不同情况处理枚举值。