An assertion is a piece of code that's used during development when the https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-set-debug-and-release-configurations[compilation debug mode is activated]. It allows a program to check itself as it runs. When an assertion is `true`, that means everything is operating as expected.
In non-debug mode, all https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.debug.assert[`Debug.Assert`] calls are automatically left out (via the https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.conditionalattribute[`Conditional("DEBUG")`] mechanism). So, by contract, the boolean expressions that are evaluated by those assertions must not contain any https://en.wikipedia.org/wiki/Side_effect_(computer_science)[side effects]. Otherwise, when leaving the debug mode, the functional behavior of the application is not the same anymore.
The rule will raise if the method name starts with any of the following `remove`, `delete`, `add`, `pop`, `update`, `retain`, `insert`, `push`, `append`, `clear`, `dequeue`, `enqueue`, `dispose`, `put`, or `set`, although `SetEquals` will be ignored.
In the following example, the assertion checks the return value of the remove method in the argument. Because the whole line is skipped in non-debug builds, the call to `Remove` never happens in such builds.
* Microsoft Learn https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.debug.assert/[`Debug.Assert` Method]
* Microsoft Learn https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/[Debugging, tracing, and profiling]
* Microsoft Learn https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/how-to-compile-conditionally-with-trace-and-debug[How to: Compile Conditionally with Trace and Debug]
* Microsoft Learn https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/attributes/general#conditional-attribute[Miscellaneous attributes interpreted by the C# compiler - `Conditional` attribute]
=== Articles & blog posts
* Wikipedia https://en.wikipedia.org/wiki/Side_effect_(computer_science)[Side effect (computer science)]