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

Özellik Değer
Kural Kimliği CA1865-CA1867
Başlık 'string kullanın. 'dize' yerine Method(char)'. Tek karakterli dize için Method(string)'
Kategori Performans
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin CA1865—Öneri olarak
CA1866—Öneri olarak
CA1867—Hayır

Neden

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

Bu kurallar için hedef yöntemler açık string :

  • 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 kullanılabilir
CA1865 Bir kod düzeltmesi ile otomatik olarak güvenli bir dönüştürme gerçekleştirilebildiğinde geçerlidir. Evet
CA1866 Belirtilen bir karşılaştırma olmadığında geçerlidir. No
CA1867 Diğer iki kural tarafından kapsanmayan diğer dize karşılaştırmaları için geçerlidir. No

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 dizesi "I"yerine öğesine StartsWith geçirilecek 'I' şekilde 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.