CA1310: Doğruluk için StringComparison belirtin

Özellik Değer
Kural Kimliği CA1310
Başlık Doğruluk 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 parametresini ayarlamayan ve varsayılan olarak kültüre özgü dize karşılaştırmasını kullanan bir yöntem aşırı yüklemesini kullanır. Bu nedenle, davranışı geçerli kullanıcının yerel ayar ayarlarına göre değişir.

Kural açıklaması

Varsayılan olarak kültüre özgü bir dize karşılaştırması kullanan dize karşılaştırma yöntemi, kullanıcı amacına uymayan kasıtsız çalışma zamanı davranışlarına yol açabilir. Amacın doğruluğu ve netliği için parametresiyle StringComparison aşırı yüklemeyi kullanmanız önerilir.

Bu kural, varsayılan olarak kültüre özgü StringComparison değeri kullanan dize karşılaştırma yöntemlerine bayrak ekler. Daha fazla bilgi için bkz Geçerli kültürü kullanan dize karşılaştırmaları.

Not

Yöntem tarafından varsayılan olarak kullanılan dize karşılaştırmasına bakılmaksızın tüm dize karşılaştırma yöntemlerinin ihlallerini görmek istiyorsanız, daha net olması için lütfen CA1307: StringComparison belirtin öğesini kullanın.

İ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, String.Compare(str1, str2)'yi String.Compare(str1, str2, StringComparison.Ordinal) ile değiştirin.

Uyarıların ne zaman bastırılması gerekiyor?

Kitaplık veya uygulamanın yerelleştirilmesi amaçlanmadığında bu kuraldan gelen bir uyarıyı engellemek güvenlidir.

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 CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310

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.CA1310.severity = none

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

Ayrıca bkz.