Simplify property pattern (IDE0170)

Property Value
Rule ID IDE0170
Title Simplify property pattern
Category Style
Subcategory Language rules (pattern matching preferences)
Applicable languages C#
Options csharp_style_prefer_extended_property_pattern


This style rule flags the use of a nested pattern in a property pattern. A nested pattern can be simplified to use an extended property pattern in which property subpatterns are used to reference nested members. Extended property patterns improve code readability.


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


Property Value Description
Option name csharp_style_prefer_extended_property_pattern
Option values true Prefer the extended property pattern.
false Disables the rule.
Default option value true


public record Point(int X, int Y);
public record Segment(Point Start, Point End);

// Violates IDE0170.
static bool IsEndOnXAxis(Segment segment) =>
    segment is { Start: { Y: 0 } } or { End: { Y: 0 } };

// Fixed code.
static bool IsEndOnXAxis(Segment segment) =>
    segment is { Start.Y: 0 } or { End.Y: 0 };

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 IDE0170
// The code that's violating the rule is on this line.
#pragma warning restore IDE0170

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

dotnet_diagnostic.IDE0170.severity = none

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

dotnet_analyzer_diagnostic.category-Style.severity = none

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

See also