Use pattern matching (not operator) (IDE0083)

Property Value
Rule ID IDE0083
Title Use pattern matching (not operator)
Category Style
Subcategory Language rules (pattern matching preferences)
Applicable languages C# 9.0+
Options csharp_style_prefer_not_pattern

Overview

This style rule concerns the use of C# 9.0 not pattern, when possible.

Options

Options specify the behavior that you want the rule to enforce. For information about configuring options, see Option format.

csharp_style_prefer_not_pattern

Property Value Description
Option name csharp_style_prefer_not_pattern
Option values true Prefer to use the not pattern, when possible
false Prefer not to use the not pattern.
Default option value true

Note

When the option is set to false, the analyzer does not flag uses of the not pattern. However, any code that's generated won't use the not pattern. When the option is set to true, code that doesn't use the not pattern is flagged, and any code that's generated uses the not pattern where applicable.

The following examples show how code would be generated by code-generating features when the option is set to either true or false.

// csharp_style_prefer_not_pattern = true
var y = o is not C c;

// csharp_style_prefer_not_pattern = false
var y = !(o is C c);

Suppress a warning

If you want to suppress only a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

#pragma warning disable IDE0083
// The code that's violating the rule is on this line.
#pragma warning restore IDE0083

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

[*.{cs,vb}]
dotnet_diagnostic.IDE0083.severity = none

To disable all of the code-style rules, set the severity for the category Style to none in the configuration file.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

For more information, see How to suppress code analysis warnings.

See also