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 |
Overview
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
Options specify the behavior that you want the rule to enforce. For information about configuring options, see Option format.
csharp_style_prefer_extended_property_pattern
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 |
Example
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.
[*.{cs,vb}]
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.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
For more information, see How to suppress code analysis warnings.