Compartir a través de


CA1500: Los nombres de las variables no deben coincidir con los nombres de los campos

TypeName

VariableNamesShouldNotMatchFieldNames

Identificador de comprobación

CA1500

Categoría

Microsoft.Maintainability

Cambio problemático

Cuando se desencadena en un parámetro que tiene el mismo nombre que un campo:

  • No problemático: si tanto el campo como el método que declara al parámetro no se pueden ver fuera del ensamblado, independientemente del cambio que realice.

  • Problemático: si cambia el nombre del campo y se puede ver fuera del ensamblado.

  • Problemático: si cambia el nombre del parámetro y el método que lo declara se puede ver fuera del ensamblado.

Cuando se desencadena en una variable local que tiene el mismo nombre que un campo:

  • No problemático: si el campo no se puede ver fuera del ensamblado, independientemente del cambio realizado.

  • No problemático: si cambia el nombre de la variable local y no cambia el nombre del campo.

  • Problemático: si cambia el nombre del campo y se puede ver fuera del ensamblado.

Motivo

Un método de instancia declara un parámetro o una variable local cuyo nombre coincide con un campo de instancia del tipo declarativo.Para detectar las variables locales que infringen esta regla, el ensamblado probado se debe compilar a partir de la información de depuración, y el archivo de base de datos de programa asociado (.pdb) debe estar disponible.

Descripción de la regla

Cuando el nombre de un campo de instancia coincide con el de un parámetro o el de una variable local, se tiene acceso al campo de instancia utilizando la palabra this (Me en Visual Basic) desde el interior del cuerpo del método.Al mantener el código, resulta fácil olvidarse de esta diferencia y suponer que el parámetro o la variable local hace referencia al campo de instancia, lo que puede provocar errores.Esto sucede especialmente con cuerpos de método largos.

Cómo corregir infracciones

Para corregir una infracción de esta regla, cambie el nombre del parámetro o la variable, o el del campo.

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Ejemplo

El ejemplo siguiente muestra dos infracciones de esta regla.

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;
      }
   }
}