CA1307: Netlik için StringComparison belirtin

Özellik Değer
Kural Kimliği CA1307
Başlık Daha anlaşılır olması için StringComparison belirtin
Kategori Globalleştirme
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

Dize karşılaştırma işlemi, StringComparison parametresi ayarlanmayan bir metot 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 ne zaman varsa, bu parametreyi içermeyen 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, Ordinal dize karşılaştırma yöntemlerini varsayılan olarak kullanan ve bu modun varsayılan kullanımını hedefleyen kullanıcılar için potansiyel olarak 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, string karşılaştırma yöntemlerini parametre olarak StringComparison numaralandırmasını kabul eden aşırı yüklemelerle değiştirin. Örneğin, str1.IndexOf(ch1)'yi str1.IndexOf(ch1, StringComparison.Ordinal) ile değiştirin.

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 noneolarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.CA1307.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Ayrıca bkz.