How to compare Enum values in C#? - GeeksforGeeks

23 Jul, 2019
Enum.CompareTo(Object) Method is used to compare the current instance to a specified object and returns an indication of their relative values.
Syntax:
public int CompareTo (object target);
Here, the target is an object to compare or it may be null.
Returns: This method returns a signed number which shows the relative values of the current instance and target as follows:
Less than zero: If the value of the current instance is less than the value of target.
Zero: If the value of the current instance is equal to the value of the target.
Greater than zero: If the value of the current instance is greater than the value of the target or the target is null.
Exceptions:
ArgumentException: If the target and current instance are not the same types.
InvalidOperationException: If the instance is not type SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, or UInt64.
NullReferenceException: If the current instance is null.
Below programs illustrate the use of the above-discussed method:
Example 1:
// C# program to demonstrate the // Enum.CompareTo(Object) Methodusing System;  public class GFG {           enum Color     {         RED, GREEN, BLUE    };      // Driver method     public static void Main(String[] args)     {         Color c1 = Color.RED;         Color c2 = Color.GREEN;         Color c3 = Color.RED;         Color c4 = Color.BLUE;                   Console.Write("Comparing {0} with {1} : ", c1, c2);                   // CompareTo method         Console.WriteLine(c1.CompareTo(c2));                   Console.Write("Comparing {0} with {1} : ", c1, c3);                   // CompareTo method         Console.WriteLine(c1.CompareTo(c3));                   Console.Write("Comparing {0} with {1} : ", c4, c2);                   // CompareTo method         Console.WriteLine(c4.CompareTo(c2));               } } 
Comparing RED with GREEN : -1
Comparing RED with RED : 0
Comparing BLUE with GREEN : 1

Example 2:
// C# program to demonstrate the // Enum.CompareTo(Object) Methodusing System;  public class GFG {           enum Color{Red, Blue};          enum Seasons {Winter, Summer};      // Driver method     public static void Main(String[] args)     {         Color c1 = Color.Red;         Color c2 = Color.Blue;                   Seasons s1 = Seasons.Winter;        Seasons s2 = Seasons.Summer;                  Console.Write("Comparing {0} with {1} : ", c1, c2);                   // CompareTo method         Console.WriteLine(c1.CompareTo(c2));                   Console.Write("Comparing {0} with {1} : ", c1, s1);                   // using CompareTo method        // it will give exception        // as target and the current        // instance are not the same        // types        Console.WriteLine(c1.CompareTo(s1));                     } } 
Runtime Error:
Unhandled Exception:System.ArgumentException: Object must be the same type as the enum. The type passed in was ‘GFG+Seasons’; the enum type was ‘GFG+Color’.at System.Enum.CompareTo (System.Object target) <0x7ff9d1544610 + 0x000da> in <0f8aeac9d63d4b8aa575761bb4e65b79>:0
Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.enum.compareto?view=netframework-4.8
CSharp-Enum-Class
CSharp-method
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C# | Constructors
C# | Class and Object
Difference between Ref and Out keywords in C#
C# | Delegates
Extension Method in C#
Introduction to .NET Framework
Partial Classes in C#
Top 50 C# Interview Questions & Answers
C# | Data Types
Basic CRUD (Create, Read, Update, Delete) in ASP.NET MVC Using C# and Entity Framework