Order modifiers (IDE0036)

Property Value
Rule ID IDE0036
Title Order modifiers
Category Style
Subcategory Language rules (modifier preferences)
Applicable languages C# and Visual Basic
Introduced version Visual Studio 2017
Options csharp_preferred_modifier_order
visual_basic_preferred_modifier_order

Overview

This rule lets you enforce a desired modifier sort order.

  • When this rule is enabled and the associated options are set to a list of modifiers, prefer the specified ordering.
  • When this rule is not enabled, no specific modifier order is preferred.

Options

The associated options for this rule let you specify the desired modifier order for C# and Visual Basic, respectively.

For information about configuring options, see Option format.

csharp_preferred_modifier_order

Property Value Description
Option name csharp_preferred_modifier_order
Applicable languages C#
Option values One or more C# modifiers, such as public, private, and protected
Default option value public, private, protected, internal, file, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, required, volatile, async
// csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
class MyClass
{
    private static readonly int _daysInYear = 365;
}

visual_basic_preferred_modifier_order

Property Value Description
Option name visual_basic_preferred_modifier_order
Applicable languages Visual Basic
Option values One or more Visual Basic modifiers, such as Partial, Private, and Public
Default option value Partial, Default, Private, Protected, Public, Friend, NotOverridable, Overridable, MustOverride, Overloads, Overrides, MustInherit, NotInheritable, Static, Shared, Shadows, ReadOnly, WriteOnly, Dim, Const, WithEvents, Widening, Narrowing, Custom, Async
' visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async
Public Class MyClass
    Private Shared ReadOnly daysInYear As Int = 365
End Class

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

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0036.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