C#idiomatic C#
comparison-operatorscsharp/language-reference/operators

Language

Comparison operators (C# reference)

C# comparison operators check the order of values. The operators `>`, `<`, `>=`, `<=` compare the order of values. They determine if a value is greater than or less than another value.

  • page csharp/language-reference/operators/comparison-operators
  • updated 01/20/2026

The < (less than), > (greater than), <= (less than or equal), and >= (greater than or equal) comparison, also known as relational, operators compare their operands. All integral and floating-point numeric types support those operators.


ms.custom: "updateeachrelease"

The C# language reference documents the most recently released version of the C# language. It also contains initial documentation for features in public previews for the upcoming language release.

The documentation identifies any feature first introduced in the last three versions of the language or in current public previews.

The char type also supports comparison operators. When you use char operands, the corresponding character codes are compared.

Enumeration types also support comparison operators. For operands of the same enum type, the corresponding values of the underlying integral type are compared.

The == and != operators check if their operands are equal or not.

Less than operator <

The < operator returns true if its left-hand operand is less than its right-hand operand, false otherwise:

sample · csharpdocs/csharp/language-reference/operators/snippets/shared/ComparisonOperators.csLess

csharp
namespace operators;

public static class ComparisonOperators
{
    public static void Examples()
    {
        Console.WriteLine("--- >");
        Greater();
        Console.WriteLine("--- <");
        Less();
        Console.WriteLine("--- >=");
        GreaterOrEqual();
        Console.WriteLine("--- <=");
        LessOrEqual();
    }

    private static void Greater()
    {
        // <SnippetGreater>
        Console.WriteLine(7.0 > 5.1);   // output: True
        Console.WriteLine(5.1 > 5.1);   // output: False
        Console.WriteLine(0.0 > 5.1);   // output: False

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetGreater>
    }

    private static void Less()
    {
        // <SnippetLess>
        Console.WriteLine(7.0 < 5.1);   // output: False
        Console.WriteLine(5.1 < 5.1);   // output: False
        Console.WriteLine(0.0 < 5.1);   // output: True

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetLess>
    }

    private static void GreaterOrEqual()
    {
        // <SnippetGreaterOrEqual>
        Console.WriteLine(7.0 >= 5.1);   // output: True
        Console.WriteLine(5.1 >= 5.1);   // output: True
        Console.WriteLine(0.0 >= 5.1);   // output: False

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetGreaterOrEqual>
    }

    private static void LessOrEqual()
    {
        // <SnippetLessOrEqual>
        Console.WriteLine(7.0 <= 5.1);   // output: False
        Console.WriteLine(5.1 <= 5.1);   // output: True
        Console.WriteLine(0.0 <= 5.1);   // output: True

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetLessOrEqual>
    }
}

Greater than operator >

The > operator returns true if its left-hand operand is greater than its right-hand operand, false otherwise:

sample · csharpdocs/csharp/language-reference/operators/snippets/shared/ComparisonOperators.csGreater

csharp
namespace operators;

public static class ComparisonOperators
{
    public static void Examples()
    {
        Console.WriteLine("--- >");
        Greater();
        Console.WriteLine("--- <");
        Less();
        Console.WriteLine("--- >=");
        GreaterOrEqual();
        Console.WriteLine("--- <=");
        LessOrEqual();
    }

    private static void Greater()
    {
        // <SnippetGreater>
        Console.WriteLine(7.0 > 5.1);   // output: True
        Console.WriteLine(5.1 > 5.1);   // output: False
        Console.WriteLine(0.0 > 5.1);   // output: False

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetGreater>
    }

    private static void Less()
    {
        // <SnippetLess>
        Console.WriteLine(7.0 < 5.1);   // output: False
        Console.WriteLine(5.1 < 5.1);   // output: False
        Console.WriteLine(0.0 < 5.1);   // output: True

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetLess>
    }

    private static void GreaterOrEqual()
    {
        // <SnippetGreaterOrEqual>
        Console.WriteLine(7.0 >= 5.1);   // output: True
        Console.WriteLine(5.1 >= 5.1);   // output: True
        Console.WriteLine(0.0 >= 5.1);   // output: False

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetGreaterOrEqual>
    }

    private static void LessOrEqual()
    {
        // <SnippetLessOrEqual>
        Console.WriteLine(7.0 <= 5.1);   // output: False
        Console.WriteLine(5.1 <= 5.1);   // output: True
        Console.WriteLine(0.0 <= 5.1);   // output: True

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetLessOrEqual>
    }
}

Less than or equal operator <=

The <= operator returns true if its left-hand operand is less than or equal to its right-hand operand. Otherwise, it returns false:

sample · csharpdocs/csharp/language-reference/operators/snippets/shared/ComparisonOperators.csLessOrEqual

csharp
namespace operators;

public static class ComparisonOperators
{
    public static void Examples()
    {
        Console.WriteLine("--- >");
        Greater();
        Console.WriteLine("--- <");
        Less();
        Console.WriteLine("--- >=");
        GreaterOrEqual();
        Console.WriteLine("--- <=");
        LessOrEqual();
    }

    private static void Greater()
    {
        // <SnippetGreater>
        Console.WriteLine(7.0 > 5.1);   // output: True
        Console.WriteLine(5.1 > 5.1);   // output: False
        Console.WriteLine(0.0 > 5.1);   // output: False

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetGreater>
    }

    private static void Less()
    {
        // <SnippetLess>
        Console.WriteLine(7.0 < 5.1);   // output: False
        Console.WriteLine(5.1 < 5.1);   // output: False
        Console.WriteLine(0.0 < 5.1);   // output: True

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetLess>
    }

    private static void GreaterOrEqual()
    {
        // <SnippetGreaterOrEqual>
        Console.WriteLine(7.0 >= 5.1);   // output: True
        Console.WriteLine(5.1 >= 5.1);   // output: True
        Console.WriteLine(0.0 >= 5.1);   // output: False

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetGreaterOrEqual>
    }

    private static void LessOrEqual()
    {
        // <SnippetLessOrEqual>
        Console.WriteLine(7.0 <= 5.1);   // output: False
        Console.WriteLine(5.1 <= 5.1);   // output: True
        Console.WriteLine(0.0 <= 5.1);   // output: True

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetLessOrEqual>
    }
}

Greater than or equal operator >=

The >= operator returns true if its left-hand operand is greater than or equal to its right-hand operand. Otherwise, it returns false:

sample · csharpdocs/csharp/language-reference/operators/snippets/shared/ComparisonOperators.csGreaterOrEqual

csharp
namespace operators;

public static class ComparisonOperators
{
    public static void Examples()
    {
        Console.WriteLine("--- >");
        Greater();
        Console.WriteLine("--- <");
        Less();
        Console.WriteLine("--- >=");
        GreaterOrEqual();
        Console.WriteLine("--- <=");
        LessOrEqual();
    }

    private static void Greater()
    {
        // <SnippetGreater>
        Console.WriteLine(7.0 > 5.1);   // output: True
        Console.WriteLine(5.1 > 5.1);   // output: False
        Console.WriteLine(0.0 > 5.1);   // output: False

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetGreater>
    }

    private static void Less()
    {
        // <SnippetLess>
        Console.WriteLine(7.0 < 5.1);   // output: False
        Console.WriteLine(5.1 < 5.1);   // output: False
        Console.WriteLine(0.0 < 5.1);   // output: True

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetLess>
    }

    private static void GreaterOrEqual()
    {
        // <SnippetGreaterOrEqual>
        Console.WriteLine(7.0 >= 5.1);   // output: True
        Console.WriteLine(5.1 >= 5.1);   // output: True
        Console.WriteLine(0.0 >= 5.1);   // output: False

        Console.WriteLine(double.NaN < 5.1);   // output: False
        Console.WriteLine(double.NaN >= 5.1);  // output: False
        // </SnippetGreaterOrEqual>
    }

    private static void LessOrEqual()
    {
        // <SnippetLessOrEqual>
        Console.WriteLine(7.0 <= 5.1);   // output: False
        Console.WriteLine(5.1 <= 5.1);   // output: True
        Console.WriteLine(0.0 <= 5.1);   // output: True

        Console.WriteLine(double.NaN > 5.1);   // output: False
        Console.WriteLine(double.NaN <= 5.1);  // output: False
        // </SnippetLessOrEqual>
    }
}

Operator overloadability

You can overload the <, >, <=, and >= operators in a user-defined type.

If you overload one of the < or > operators, you must overload both < and >. If you overload one of the <= or >= operators, you must overload both <= and >=.

C# language specification

For more information, see the Relational and type-testing operators section of the C# language specification.

See also