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+


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


Property Value
Option name csharp_style_prefer_not_pattern
Option values true - Prefer to use 'not' pattern, when possible (introduced with C# 9.0)

false - Do not prefer to use not pattern.
Default option value true


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);

See also