Freigeben über


CA1500: Variablennamen sollten nicht mit Feldnamen übereinstimmen

TypeName

VariableNamesShouldNotMatchFieldNames

CheckId

CA1500

Kategorie

Microsoft.Maintainability

Unterbrechende Änderung

Wenn für einen Parameter ausgelöst, der über den gleichen Namen wie ein Feld verfügt:

  • Nicht unterbrechend – Wenn weder das Feld noch die Methode, durch die der Parameter deklariert wird, außerhalb der Assembly sichtbar sind, und zwar unabhängig von der vorgenommenen Änderung.

  • Unterbrechend – Wenn Sie den Feldnamen ändern und das Feld außerhalb der Assembly sichtbar ist.

  • Unterbrechend – Wenn Sie den Parameternamen ändern und die Methode, durch die er deklariert wird, außerhalb der Assembly sichtbar ist.

Wenn für eine lokale Variable ausgelöst, die den gleichen Namen wie ein Feld hat:

  • Nicht unterbrechend – Wenn das Feld außerhalb der Assembly nicht sichtbar ist, und zwar unabhängig von der vorgenommenen Änderung.

  • Nicht unterbrechend – Wenn Sie zwar den Namen der lokalen Variablen, nicht aber den Feldnamen ändern.

  • Unterbrechend – Wenn Sie den Feldnamen ändern und das Feld außerhalb der Assembly sichtbar ist.

Ursache

Mit einer Instanzenmethode wird ein Parameter oder eine lokale Variable deklariert, dessen bzw. deren Name mit dem Namen eines Instanzenfelds des deklarierenden Typs übereinstimmt. Um lokale Variablen, die gegen die Regel verstoßen, abzufangen, muss die getestete Assembly mit Debuginformationen erstellt werden, und die zugehörige Programmdatenbankdatei (PDB) muss verfügbar sein.

Regelbeschreibung

Wenn der Name eines Instanzenfelds mit dem Namen eines Parameters oder einer lokalen Variablen übereinstimmt, wird im Methodentext mit dem this-Schlüsselwort (Me in Visual Basic) auf das Instanzenfeld zugegriffen. Bei der Codeverwaltung gerät dieser Unterschied leicht in Vergessenheit, und dann wird häufig angenommen, dass sich der Parameter bzw. die lokale Variable auf das Instanzenfeld bezieht, wodurch Fehler entstehen. Dies gilt besonders für lange Methodentexte.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, benennen Sie entweder den Parameter/die Variable oder das Feld um.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel werden zwei Verstöße gegen diese Regel veranschaulicht.

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