Bagikan melalui


CA1500: Nama variabel tidak boleh cocok dengan nama bidang

Item Value
RuleId CA1500
Category Microsoft.Maintainability
Breaking change Saat diaktifkan pada parameter yang memiliki nama yang sama dengan bidang:

- Tidak melanggar - Jika bidang dan metode yang menyatakan parameter tidak dapat dilihat di luar perakitan, terlepas dari perubahan yang Anda buat.
- Melanggar - Jika Anda mengubah nama bidang dan dapat dilihat di luar perakitan.
- Melanggar - Jika Anda mengubah nama parameter dan metode yang menyatakannya dapat dilihat di luar perakitan.

Ketika diaktifkan pada variabel lokal yang memiliki nama yang sama dengan bidang:

- Tidak melanggar - Jika bidang tidak dapat dilihat di luar perakitan, terlepas dari perubahan yang Anda buat.
- Tidak melanggar - Jika Anda mengubah nama variabel lokal dan tidak mengubah nama bidang.
- Melanggar - Jika Anda mengubah nama bidang dan itu dapat dilihat di luar perakitan.

Penyebab

Metode instans mendeklarasikan parameter atau variabel lokal yang namanya cocok dengan bidang instans dari jenis yang dideklarasikan. Untuk menangkap variabel lokal yang melanggar aturan, rakitan yang diuji harus dibangun dengan menggunakan informasi penelusuran kesalahan dan file database program (.pdb) terkait harus tersedia.

Deskripsi aturan

Saat nama bidang instans cocok dengan parameter atau nama variabel lokal, bidang instans diakses dengan menggunakan this kata kunci (Me dalam Visual Basic) saat berada di dalam isi metode. Saat mempertahankan kode, mudah untuk melupakan perbedaan ini dan berasumsi bahwa variabel parameter/lokal mengacu pada bidang instans, yang menyebabkan kesalahan. Ini berlaku terutama untuk tubuh metode yang panjang.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, ganti nama parameter/variabel atau bidang.

Kapan harus menekan peringatan

Jangan menyembunyikan peringatan dari aturan ini.

Contoh

Contoh berikut menunjukkan dua pelanggaran aturan.

using System;

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