Share via


CA1500:变量名不应与字段名相同

类型名

VariableNamesShouldNotMatchFieldNames

CheckId

CA1500

类别

Microsoft.Maintainability

是否重大更改

在与字段同名的参数上激发时:

  • 无间断 - 如果无论进行什么更改,声明参数的字段和方法在程序集外都不可见。

  • 间断 - 如果更改字段名,并且该字段在程序集外可见。

  • 间断 - 如果更改参数名,并且声明该参数的方法在程序集外可见。

在与字段同名的局部变量上激发时:

  • 无间断 - 如果无论进行什么更改,字段在程序集外都不可见。

  • 无间断 - 如果更改局部变量名,而不更改字段名。

  • 间断 - 如果更改字段名,并且该字段在程序集外可见。

原因

实例方法声明一个名称与声明类型的实例字段匹配的参数或局部变量。 若要捕捉与该规则冲突的局部变量,必须使用调试信息来生成被测试的程序集,并且关联的程序数据库文件 (.pdb) 必须可用。

规则说明

如果实例字段的名称与参数或局部变量的名称相同,在方法体内将使用 this(在 Visual Basic 中为 Me)关键字来访问实例字段。 维护代码时,很容易忘记此区别,而把参数/局部变量当成实例字段,从而导致错误。 对于较长的方法体,更是如此。

如何解决冲突

若要修复与该规则的冲突,请重命名参数/变量或字段。

何时禁止显示警告

不要禁止显示此规则发出的警告。

示例

下面的示例演示与该规则冲突的两种情况。

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