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
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 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.

Dekont

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, StringComparison.Ordinal)değiştirinstr1.IndexOf(ch1).

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.