CA1865-CA1867: Tek karakterli dizeler için 'string.Method(char)' kullanın, 'string.Method(string)' yerine.

Özellik Değer
Kural Kimliği CA1865-CA1867
Başlık Tek karakterli dizeler için 'string.Method(char)' ifadesini, 'string.Method(string)' ifadesine tercih edin.
Kategori Performans
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin CA1865—Öneri olarak
CA1866—Öneri olarak
CA1867—Hayır
Geçerli diller C# ve Visual Basic

Neden

string.Method(string) kullanılabilir olduğunda string.Method(char) kullanılır.

Bu kurallar için string üzerindeki hedef yöntemler:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

Aşağıdaki tabloda, ilgili kural kimliklerinin her biri için koşullar özetlenmiş olarak verilmiştir.

Tanılama Kimliği Açıklama Kod düzeltmesi var mı?
CA1865 Bir kod düzeltmesi ile otomatik olarak güvenli bir dönüştürme gerçekleştirilebildiğinde geçerlidir. Yes
CA1866 Belirtilen bir karşılaştırma olmadığında geçerlidir. Hayır
CA1867 Diğer iki kural tarafından kapsanmayan diğer dize karşılaştırmaları için geçerlidir. Hayır

CA1867 varsayılan olarak devre dışıdır.

Kural açıklaması

Char parametresini alan aşırı yükleme, dize parametresini alan aşırı yüklemeden daha iyi performans gösterir.

İhlalleri düzeltme

Bir ihlali düzeltmek için dize parametresi aşırı yüklemesi yerine char parametresi aşırı yüklemesini kullanın.

Aşağıdaki örneği inceleyin:

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I")
End Function

Bu kod, "I" dizesi yerine 'I' kodunu StartsWith öğesine geçirmek için değiştirilebilir.

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I"c)
End Function

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

Yöntemini bir dizeyle çağırmanın performans etkisi konusunda endişeniz yoksa, bu kuralın ihlalini bastırın.

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

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.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

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

Ayrıca bkz.