Partilhar via


CA1500: os nomes de variável não devem corresponder aos nomes de campo

TypeName

VariableNamesShouldNotMatchFieldNames

CheckId

CA1500

Categoria

Microsoft.Maintainability

Alteração Significativa

Quando é acionado em um parâmetro que tenha o mesmo nome que um campo:

  • Interrompendo não - se o campo e o método que declara o parâmetro não podem ser considerados fora do assembly, independentemente de alteração você use.

  • Interromper - se você alterar o nome do campo e pode ser consultado fora do assembly.

  • Interromper - se você alterar o nome do parâmetro e o método que declara o pode ser considerado fora do assembly.

Quando é acionado em uma variável local que tenha o mesmo nome que um campo:

  • Interrompendo não - se o campo não pode ser considerado fora do assembly, independentemente de alteração você use.

  • Sem-quebras - se você alterar o nome da variável local e não altera o nome do campo.

  • Interromper - se você alterar o nome do campo e pode ser considerado fora do assembly.

Causa

Um método de instância declara um parâmetro ou uma variável local cujo nome corresponde a um campo da instância do tipo declarando.Para capturar as variáveis locais que violam a regra, o assembly testado deve ser criado usando informações de depuração e o arquivo associado de base de dados do programa (.pdb) deve estar disponível.

Descrição da Regra

Quando o nome de um campo da instância corresponda um parâmetro ou um nome de variável local, o campo da instância do é acessado usando a palavra-chave de this (Me em Visual Basic) dentro do corpo do método.Para manter o código, é fácil esquecer essa diferença e pressupõe que o parâmetro/variável local se refere ao campo da instância, o que resulta em erros.Isso é especialmente verdadeiro para corpos longos do método.

Como Corrigir Violações

Para corrigir uma violação desta regra, renomeie o parâmetro/variável ou o campo.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir mostra duas violações da regra.

Imports System

Namespace MaintainabilityLibrary

   Class MatchingNames

      Dim someField As Integer 

      Sub SomeMethodOne(someField As Integer)
      End Sub 

      Sub SomeMethodTwo()
         Dim someField As Integer 
      End Sub 

   End Class 

End Namespace
using System;

namespace MaintainabilityLibrary
{
   class MatchingNames
   {
      int someField;

      void SomeMethodOne(int someField) {}

      void SomeMethodTwo()
      {
         int someField;
      }
   }
}