Check if Two enums Are Equal or Not in C#

Enums, short for enumerations, are a fundamental part of the C# programming language. They allow developers to define a type of variable that can have one of a few predefined constants. Understanding how to compare two enums for equality can be a vital tool in your C# programming toolbox.

Syntax

Following is the syntax for declaring an enum

public enum EnumName {
   Value1,
   Value2,
   Value3
}

Following is the syntax for comparing enum values

if (enum1 == enum2) {
   // enums are equal
}

Understanding Enums in C#

Enums are value types in C# and are used to represent a collection of named constants. Each enum member has an underlying integer value starting from 0

public enum Days {
   Sunday,    // 0
   Monday,    // 1
   Tuesday,   // 2
   Wednesday, // 3
   Thursday,  // 4
   Friday,    // 5
   Saturday   // 6
}

Enum Comparison Methods == Operator enum1 == enum2 Direct comparison Case-sensitive Fast performance String.Equals() ToString() + Equals String conversion Case-insensitive option Slower performance

Using == Operator for Direct Comparison

The most common way to compare enum values is using the equality operator (==). This performs a direct comparison of the underlying values

Example

using System;

public enum Days {
   Sunday,
   Monday,
   Tuesday,
   Wednesday,
   Thursday,
   Friday,
   Saturday
}

public class Program {
   public static void Main() {
      Days day1 = Days.Monday;
      Days day2 = Days.Monday;
      Days day3 = Days.Tuesday;

      Console.WriteLine("Comparing day1 (Monday) with day2 (Monday): " + (day1 == day2));
      Console.WriteLine("Comparing day1 (Monday) with day3 (Tuesday): " + (day1 == day3));
      
      // Using != operator
      Console.WriteLine("Are day1 and day3 different? " + (day1 != day3));
   }
}

The output of the above code is

Comparing day1 (Monday) with day2 (Monday): True
Comparing day1 (Monday) with day3 (Tuesday): False
Are day1 and day3 different? True

Using Equals() Method

You can also use the Equals() method for enum comparison, which provides the same result as the == operator

Example

using System;

public enum Priority {
   Low,
   Medium,
   High,
   Critical
}

public class Program {
   public static void Main() {
      Priority p1 = Priority.High;
      Priority p2 = Priority.High;
      Priority p3 = Priority.Low;

      Console.WriteLine("Using Equals() method:");
      Console.WriteLine("p1.Equals(p2): " + p1.Equals(p2));
      Console.WriteLine("p1.Equals(p3): " + p1.Equals(p3));
      
      Console.WriteLine("\nUsing == operator:");
      Console.WriteLine("p1 == p2: " + (p1 == p2));
      Console.WriteLine("p1 == p3: " + (p1 == p3));
   }
}

The output of the above code is

Using Equals() method:
p1.Equals(p2): True
p1.Equals(p3): False

Using == operator:
p1 == p2: True
p1 == p3: False

Using String Comparison for Case-Insensitive Checks

When comparing enum values as strings (useful for user input validation), you can use String.Equals() with StringComparison.OrdinalIgnoreCase for case-insensitive comparison

Example

using System;

public enum Status {
   Active,
   Inactive,
   Pending
}

public class Program {
   public static void Main() {
      Status currentStatus = Status.Active;
      string userInput = "ACTIVE";
      string userInput2 = "inactive";

      Console.WriteLine("Current status: " + currentStatus);
      Console.WriteLine("User input 1: " + userInput);
      Console.WriteLine("User input 2: " + userInput2);
      
      // Case-insensitive comparison
      bool match1 = String.Equals(currentStatus.ToString(), userInput, StringComparison.OrdinalIgnoreCase);
      bool match2 = String.Equals(currentStatus.ToString(), userInput2, StringComparison.OrdinalIgnoreCase);
      
      Console.WriteLine("Does current status match user input 1? " + match1);
      Console.WriteLine("Does current status match user input 2? " + match2);
   }
}

The output of the above code is

Current status: Active
User input 1: ACTIVE
User input 2: inactive
Does current status match user input 1? True
Does current status match user input 2? False

Comparison Methods Summary

Method Use Case Performance Case Sensitivity
== operator Direct enum comparison Fast Not applicable
Equals() method Object-oriented comparison Fast Not applicable
String.Equals() String-based comparison Slower Configurable

Conclusion

Comparing enum values in C# is straightforward using the == operator or Equals() method for direct comparison. For case-insensitive string-based comparisons, use String.Equals() with appropriate StringComparison options. Choose the method that best fits your specific use case and performance requirements.

Updated on: 2026-03-17T07:04:36+05:30

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements