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 | CA1307 |
Başlık | Daha anlaşılır olması için StringComparison belirtin |
Kategori | Globalleştirme |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Dize karşılaştırma işlemi parametre ayarlamayan StringComparison bir yöntem aşırı yüklemesi kullanır.
Kural açıklaması
Birçok dize karşılaştırma işlemi, bir numaralandırma değerini parametre olarak kabul StringComparison eden bir aşırı yükleme sağlar.
Parametre alan StringComparison bir aşırı yükleme olduğunda, bu parametreyi almayan bir aşırı yükleme yerine kullanılmalıdır. Bu parametre açıkça ayarlandığında, kodunuz genellikle daha net ve bakımı kolay hale getirilir. Daha fazla bilgi için bkz . Dize karşılaştırmalarını açıkça belirtme.
Not
Bu kural, karşılaştırma yöntemi tarafından kullanılan varsayılan StringComparison değeri dikkate almaz. Bu nedenle, varsayılan olarak dize karşılaştırmasını Ordinal
kullanan yöntemler ve bu varsayılan karşılaştırma modunu kullanmayı amaçlayan kullanıcı için gürültülü olabilir.
Yalnızca varsayılan olarak kültüre özgü dize karşılaştırması kullanan bilinen dize yöntemlerinin ihlallerini görmek istiyorsanız, bunun yerine CA1310 : StringComparison'ı belirtin.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için, dize karşılaştırma yöntemlerini numaralandırmayı parametre olarak kabul StringComparison eden aşırı yüklemelerle değiştirin. Örneğin, olarak str1.IndexOf(ch1)
değiştirinstr1.IndexOf(ch1, StringComparison.Ordinal)
.
Uyarıların ne zaman bastırılması gerekiyor?
Amacın netliği gerekli olmadığında bu kuraldan gelen bir uyarıyı bastırmak güvenlidir. Örneğin, test kodu veya yerelleştirilebilir olmayan kod gerekli olmayabilir.
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 CA1307
// The code that's violating the rule is on this line.
#pragma warning restore CA1307
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1307.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.