CA1822: Marcar membros como estáticosCA1822: Mark members as static

ValorValue
ID da regraRule ID CA1822CA1822
CategoriaCategory DesempenhoPerformance
A correção está sendo interrompida ou não está sendo interrompidaFix is breaking or non-breaking Não separável – se o membro não estiver visível fora do assembly, independentemente da alteração feita.Non-breaking - If the member is not visible outside the assembly, regardless of the change you make.

Não separável – se você simplesmente alterar o membro para um membro de instância com a this palavra-chave.Non-breaking - If you just change the member to an instance member with the this keyword.

Quebrando – se você alterar o membro de um membro de instância para um membro estático e ele estiver visível fora do assembly.Breaking - If you change the member from an instance member to a static member and it is visible outside the assembly.

CausaCause

Um membro que não acessa dados de instância não está marcado como estático (compartilhado no Visual Basic).A member that does not access instance data is not marked as static (Shared in Visual Basic).

Descrição da regraRule description

Membros que não acessam dados de instância ou métodos de instância de chamada podem ser marcados como estáticos (compartilhados em Visual Basic).Members that do not access instance data or call instance methods can be marked as static (Shared in Visual Basic). Depois que você marcar os métodos como estáticos, o compilador emitirá sites de chamada não virtuais para esses membros.After you mark the methods as static, the compiler will emit nonvirtual call sites to these members. A emissão de sites de chamadas não virtuais impedirá uma verificação no tempo de execução para cada chamada, o que garante que o ponteiro do objeto atual seja não nulo.Emitting nonvirtual call sites will prevent a check at run time for each call that makes sure that the current object pointer is non-null. Isso pode obter um alto desempenho mensurável para o código sensível ao desempenho.This can achieve a measurable performance gain for performance-sensitive code. Em alguns casos, a falha ao acessar a instância do objeto atual representa um problema de correção.In some cases, the failure to access the current object instance represents a correctness issue.

Como corrigir violaçõesHow to fix violations

Marque o membro como estático (ou compartilhado em Visual Basic) ou use ' this '/' me ' no corpo do método, se apropriado.Mark the member as static (or Shared in Visual Basic) or use 'this'/'Me' in the method body, if appropriate.

Quando suprimir avisosWhen to suppress warnings

É seguro suprimir um aviso dessa regra para o código fornecido anteriormente para o qual a correção seria uma alteração significativa.It is safe to suppress a warning from this rule for previously shipped code for which the fix would be a breaking change.

Configurar o código para analisarConfigure code to analyze

Use a opção a seguir para configurar em quais partes de sua base de código executar essa regra.Use the following option to configure which parts of your codebase to run this rule on.

Você pode configurar essa opção apenas para essa regra, para todas as regras ou para todas as regras nesta categoria (desempenho).You can configure this option for just this rule, for all rules, or for all rules in this category (Performance). Para obter mais informações, consulte Opções de configuração de regra de qualidade de código.For more information, see Code quality rule configuration options.

Incluir superfícies de API específicasInclude specific API surfaces

Você pode configurar em quais partes de sua base de código executar essa regra, com base em sua acessibilidade.You can configure which parts of your codebase to run this rule on, based on their accessibility. Por exemplo, para especificar que a regra deve ser executada somente na superfície da API não pública, adicione o seguinte par chave-valor a um arquivo . editorconfig em seu projeto:For example, to specify that the rule should run only against the non-public API surface, add the following key-value pair to an .editorconfig file in your project:

dotnet_code_quality.CAXXXX.api_surface = private, internal