CA2225: Overload operator telah memberi nama alternatif
Properti | Nilai |
---|---|
ID Aturan | CA2225 |
Judul | Kelebihan beban operator telah menamai alternatif |
Golongan | Penggunaan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Kelebihan beban operator terdeteksi dan metode alternatif bernama yang diharapkan tidak ditemukan.
Secara default, aturan ini hanya melihat jenis yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.
Deskripsi aturan
Kelebihan beban operator memungkinkan penggunaan simbol untuk mewakili komputasi untuk jenis. Misalnya, jenis yang membebani simbol +
plus untuk penambahan biasanya akan memiliki anggota alternatif bernama Add
. Anggota alternatif bernama menyediakan akses ke fungsionalitas yang sama dengan operator. Ini disediakan untuk pengembang yang memprogram dalam bahasa yang tidak mendukung operator yang kelebihan beban.
Aturan ini memeriksa:
Operator cast implisit dan eksplisit dalam jenis dengan memeriksa metode bernama
To<typename>
danFrom<typename>
.Operator yang tercantum dalam tabel berikut:
C# | Visual Basic | C++ | Nama metode alternatif |
---|---|---|---|
+ (biner) | + | + (biner) | Menambahkan |
+= | += | += | Menambahkan |
& | Dan | & | BitwiseAnd |
&= | Dan= | &= | BitwiseAnd |
| | Atau | | | BitwiseOr |
|= | Atau= | |= | BitwiseOr |
-- | T/A | -- | Keputusan |
/ | / | / | Pembagian |
/= | /= | /= | Pembagian |
== | = | == | Sama dengan |
^ | Xor | ^ | Xor |
^= | Xor= | ^= | Xor |
> | > | > | BandingkanKe atau Bandingkan |
>= | >= | >= | BandingkanKe atau Bandingkan |
++ | T/A | ++ | Peningkatan |
!= | <> | != | Sama dengan |
<< | << | << | LeftShift |
<<= | <<= | <<= | LeftShift |
< | < | < | BandingkanKe atau Bandingkan |
<= | <= | <= | BandingkanKe atau Bandingkan |
&& | T/A | && | LogicalAnd |
|| | T/A | || | LogicalOr |
! | T/A | ! | LogicalNot |
% | Mod | % | Mod atau Sisa |
%= | T/A | %= | Mod |
* (biner) | * | * | Pengalian |
*= | T/A | *= | Pengalian |
~ | Not | ~ | OnesComplement |
>> | >> | >> | RightShift |
>>= | T/A | >>= | RightShift |
- (Biner) | - (Biner) | - (Biner) | Pengurangan |
-= | T/A | -= | Pengurangan |
benar | IsTrue | T/A | IsTrue (Properti) |
- (Unary) | T/A | - | Meniadakan |
+ (unary) | T/A | + | Plus |
salah | IsFalse | Salah | IsTrue (Properti) |
*N/A berarti operator tidak dapat kelebihan beban dalam bahasa yang dipilih.
Catatan
Di C#, ketika operator biner kelebihan beban, operator penugasan yang sesuai, jika ada, juga secara implisit kelebihan beban.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, terapkan metode alternatif untuk operator. Beri nama menggunakan nama alternatif yang direkomendasikan.
Kapan harus menekan peringatan
Jangan menekan peringatan dari aturan ini jika Anda menerapkan pustaka bersama. Aplikasi dapat mengabaikan peringatan dari aturan ini.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA2225
// The code that's violating the rule is on this line.
#pragma warning restore CA2225
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA2225.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Mengonfigurasi kode yang akan dianalisis
Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.
Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku untuknya, atau untuk semua aturan dalam kategori ini (Penggunaan) yang diterapkannya. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.
Menyertakan permukaan API tertentu
Anda dapat mengonfigurasi bagian basis kode mana yang akan dijalankan aturan ini, berdasarkan aksesibilitasnya, dengan mengatur opsi api_surface. Misalnya, untuk menentukan bahwa aturan hanya boleh dijalankan pada permukaan API non-publik, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Catatan
Ganti bagian XXXX
CAXXXX
dengan ID aturan yang berlaku.
Contoh
Contoh berikut mendefinisikan struktur yang melanggar aturan ini. Untuk memperbaiki contoh, tambahkan metode publik Add(int x, int y)
ke struktur.
public struct Point
{
private int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public override string ToString()
{
return String.Format("({0},{1})", x, y);
}
// Violates rule: OperatorOverloadsHaveNamedAlternates.
public static Point operator +(Point a, Point b)
{
return new Point(a.x + b.x, a.y + b.y);
}
public int X { get { return x; } }
public int Y { get { return x; } }
}