Comparing Enum Values in C#: Using `CompareTo()` and Other Comparison Operators

Learn various techniques for comparing enum values in C#. This tutorial demonstrates using the `CompareTo()` method, equality operators (`==`, `!=`), and other comparison operators (`<`, `>`, `<=`, `>=`) for effective enum value comparisons, highlighting best practices and handling potential exceptions.



Comparing Enum Values in C#

Enums (enumerations) in C# represent a set of named constants. This article explains how to compare enum values using different techniques, including the `CompareTo()` method and other comparison operators.

`Enum.CompareTo()` Method

The `CompareTo()` method compares the current enum value with a specified object. It returns:

  • A negative number if the current value is less than the specified object.
  • Zero if the current value is equal to the specified object.
  • A positive number if the current value is greater than the specified object.

public int CompareTo(object target);

The `target` must be of the same enum type; otherwise, an `ArgumentException` is thrown.

`Enum.CompareTo()` Example


public enum Days { Mon, Tue, Wed, Thu, Fri, Sat, Sun }

public class CompareExample {
    public static void Main(string[] args) {
        Days day1 = Days.Mon;
        Days day2 = Days.Wed;
        int result = day1.CompareTo(day2); // result will be -1 (Mon < Wed)
        Console.WriteLine(result);
    }
}

Other Comparison Methods

Besides `CompareTo()`, you can compare enum values using other methods:

  • Equality Operator (`==`): Checks for equality.
  • `Enum.Equals()` method: Checks for equality.
  • Switch Statement: Useful for handling different enum values.

Example: Multiple Comparison Methods


public enum Weekdays { Mon, Tue, Wed, Thu, Fri, Sat, Sun }

public class CompareExample {
  public static void Main(string[] args) {
    // ... (code demonstrating equality comparison, Enum.Equals(), and switch statement) ...
  }
}