CodeQL documentation

Missed ternary opportunity

ID: cs/missed-ternary-operator
Kind: problem
Severity: recommendation
Precision: high
   - maintainability
   - language-features
Query suites:
   - csharp-security-and-quality.qls

Click to see the query in the CodeQL repository

An if statement where both branches do nothing but return or write to a variable can be difficult to read. It takes up a lot of lines of code and, in the case of assignment, requires the declaration of the variable to be on a different line to the two assignments. It also does not adequately express the intent of the programmer to assign or return a value based on a condition.


This pattern can be better expressed using the ternary (?) operator. This solves all the above problems by making shorter code that is easier to read and better expresses the intent of the programmer.


In this example the if statement controls only what is returned by the method.

class MissedTernaryOpportunity
    static int MyAbs(int x)
        if (x >= 0)
            return x;
            return -x;

It could be expressed a lot more simply using the ternary operator.

class MissedTernaryOpportunityFix
    static int MyAbs(int x)
        return x >= 0 ? x : -x;