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
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Hayır

Neden

Dize karşılaştırma işlemi, parametre ayarlamayan ve varsayılan olarak kültüre özgü dize karşılaştırması kullanan bir StringComparison yöntem aşırı yüklemesi 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ü dize karşılaştırması kullanan bir dize karşılaştırma yöntemi, kullanıcı amacıyla eşleşmeyen yanlışlıkla çalışma zamanı davranışına sahip olabilir. 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ı.

Dekont

Yöntemi tarafından kullanılan varsayı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, netlik için CA1307: StringComparison belirtin kullanın.

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

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.