Share via


CA1500:變數名稱不應該與欄位名稱相符

項目
RuleId CA1500
類別 Microsoft.Maintainability
重大變更 在名稱與欄位相同的參數上引發時:

- 非中斷 - 如果宣告參數的欄位和方法都無法在組件外部看到 (不論您所做的變更為何)。
- 中斷 - 如果您變更欄位的名稱,而且可以在組件外部看到。
- 中斷 - 如果您變更參數的名稱,以及宣告參數的方法可以在組件外部看到。

在與欄位具有相同名稱的區域變數上引發時:

- 不中斷 - 如果欄位無法在組件外部看到 (不論您所做的變更為何)。
- 非中斷性 - 如果您變更區域變數的名稱,而且不會變更欄位的名稱。
- 中斷 - 如果您變更欄位的名稱,而且可以在組件外部看到。

原因

執行個體方法宣告參數或區域變數,而其名稱符合宣告類型的執行個體欄位。 若要擷取違反規則的區域變數,必須使用偵錯資訊來建置測試的組件,且相關聯的程式資料庫 (.pdb) 檔案必須可供使用。

檔案描述

當執行個體欄位的名稱符合參數或區域變數名稱時,執行個體欄位會在方法主體內使用 this (在 Visual Basic 中為 Me) 關鍵字來存取。 維護程式碼時,很容易忘記此差異,並假設參數/區域變數參考執行個體欄位,這會導致錯誤。 這尤其適用於冗長的方法主體。

如何修正違規

若要修正此規則的違規,請重新具名引數/變數或欄位。

隱藏警告的時機

請勿隱藏此規則的警告。

範例

下列範例顯示規則的兩個違規。

using System;

namespace MaintainabilityLibrary
{
   class MatchingNames
   {
      int someField;
   
      void SomeMethodOne(int someField) {}
      
      void SomeMethodTwo()
      {
         int someField;
      }
   }
}