All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.plugins.csharp.S2123.html Maven / Gradle / Ivy

There is a newer version: 10.2.0.105762
Show newest version

Why is this an issue?

When using the postfix increment operator, it is important to know that the result of the expression x++ is the value before the operation x.

This means that in some cases, the result might not be what you expect:

  • When assigning x++ to x, it’s the same as assigning x to itself, since the value is assigned before the increment takes place
  • When returning x++, the returning value is x, not x+1

The same applies to the postfix and prefix decrement operators.

How to fix it

To solve the issue in assignments, eliminate the assignment, since x\++ mutates x anyways.

To solve the issue in return statements, consider using the prefix increment operator, since it works in reverse: the result of the expression ++x is the value after the operation, which is x+1, as one might expect.

The same applies to the postfix and prefix decrement operators.

Code examples

Noncompliant code example

int PickNumber()
{
  int i = 0;
  int j = 0;

  i = i++;      // Noncompliant: i is still 0
  return j--;   // Noncompliant: returns 0
}

Compliant solution

int PickNumber()
{
  int i = 0;
  int j = 0;

  i++;          // Compliant: i is incremented to 1
  return --j;   // Compliant: returns -1
}

Resources

Documentation

Articles & blog posts





© 2015 - 2024 Weber Informatics LLC | Privacy Policy