Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA2225 |
| Başlık | İşleç aşırı yüklemeleri adlandırılmış alternatiflere sahiptir |
| Kategori | Kullanım |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
Bir işleç aşırı yüklemesi algılandı ve beklenen adlandırılmış alternatif yöntem bulunamadı.
Varsayılan olarak, bu kural yalnızca dışarıdan görünen türlere bakar, ancak bu yapılandırılabilir.
Kural açıklaması
İşleç aşırı yüklemesi, bir tür için hesaplamaları temsil eden simgelerin kullanılmasına olanak tanır. Örneğin, toplama için artı simgesini aşırı yükleyen bir tür, genellikle Add adında alternatif bir üyeye sahip olur. Adlandırılmış alternatif üye, işleçle aynı işlevselliğe erişim sağlar. Aşırı yüklenmiş işleçleri desteklemeyen dillerde program yapan geliştiriciler için sağlanır.
Bu kural şu işlemleri inceler:
To<typename>veFrom<typename>adlı yöntemlerin kontrol edilmesiyle, bir türdeki örtük ve açık atama işleçleri.Aşağıdaki tabloda listelenen işleçler:
| C# | Visual Basic | C++ | Alternatif yöntem adı |
|---|---|---|---|
| + (ikili sistem) | + | + (ikili) | Ekle |
| += | += | += | Ekle |
| & | Ve | & | Bit DüzeyindeVe |
| &= | And= | &= | Bit DüzeyindeVe |
| | | Veya | | | Bit Tabanlı VEYA |
| |= | Or= | |= | Bit DüzeyindeVeya |
| -- | Yok | -- | Azaltım |
| / | / | / | Böl |
| /= | /= | /= | Böl |
| == | = | == | Eşittir |
| ^ | Xor | ^ | Xor |
| ^= | Xor= | ^= | XOR |
| > | > | > | CompareTo veya Compare |
| >= | >= | >= | CompareTo veya Compare |
| ++ | Yok | ++ | Artış |
| != | <> | != | Eşittir |
| << | << | << | Sol Kaydırma |
| <<= | <<= | <<= | Sol Kaydırma |
| < | < | < | "CompareTo" veya "Compare" |
| <= | <= | <= | CompareTo veya Compare |
| && | Yok | && | MantıksalVe |
| || | Yok | || | LogicalOr |
| ! | Yok | ! | MantıksalDeğil |
| % | Mod | % | Mod veya Kalan |
| %= | Yok | %= | Modül |
| * (ikili) | * | * | Çarpma |
| *= | Yok | *= | Çarpma |
| ~ | Not | ~ | OnesComplement |
| >> | >> | >> | RightShift |
| >>= | Yok | >>= | RightShift |
| - (ikili) | - (ikili) | - (ikili) | Subtract |
| -= | Yok | -= | Subtract |
| doğru | IsTrue | Yok | IsTrue (Özellik) |
| -(tekil) | Yok | - | Geçersiz kıl |
| + (birli) | Yok | + | Artı |
| yanlış | IsFalse | Yanlış | IsTrue (Özellik) |
*YOK, işlecin seçilen dilde aşırı yüklenemeyeceği anlamına gelir.
Not
C# dilinde, bir ikili işleç aşırı yüklendiğinde, varsa ilgili atama işleci de örtük olarak aşırı yüklenir.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için işleç için alternatif yöntemi uygulayın. Önerilen alternatif adı kullanarak adlandırın.
Uyarıların ne zaman bastırılması gerekiyor?
Paylaşılan bir kitaplık uyguluyorsanız bu kuraldan bir uyarıyı gizlemeyin. Uygulamalar bu kuralın verdiği uyarıyı göz ardı edebilir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA2225
// The code that's violating the rule is on this line.
#pragma warning restore CA2225
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA2225.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Kod çözümleme için konfigüre et
Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.
Bu seçeneği yalnızca bu kural, geçerli olduğu tüm kurallar veya bu kategorideki (Kullanım) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.
Belirli API yüzeylerini ekleme
api_surface seçeneğini ayarlayarak, bu kuralın erişilebilirliği temelinde kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Not
XXXX
CAXXXX bölümünü geçerli kuralın kimliğiyle değiştirin.
Örnek
Aşağıdaki örnek, bu kuralı ihlal eden bir yapı tanımlar. Örneği düzeltmek için yapıya genel Add(int x, int y) bir yöntem ekleyin.
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; } }
}