Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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
}
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.
