'string.Concat' yöntemini span tabanlı kullanın.

Özellik Değer
Kural Kimliği CA1845
Başlık Span tabanlı 'string.Concat' kullanın.
Kategori Performans
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Öneri olarak
Geçerli diller C# ve Visual Basic

Neden

Bu kural, Substring çağrıları içeren dize birleştirme ifadelerini bulur ve Substring'in AsSpan ile değiştirilmesini ve span tabanlı aşırı yüklemesi olan String.Concat'yi kullanmayı önerir.

Kural açıklaması

Çağrılması Substring , ayıklanan alt dizenin bir kopyasını oluşturur. AsSpan yerine Substring kullanarak ve aralıkları kabul eden string.Concat aşırı yüklemesini çağırarak, gereksiz dize ayrımını ortadan kaldırabilirsiniz.

İhlalleri düzeltme

İhlalleri düzeltmek için:

  1. Dize birleştirmesini bir çağrı kullanarak string.Concat ile değiştirin ve
  2. Çağrıları Substring ile AsSpan çağrılarına değiştirin.

Aşağıdaki kod parçacığında ihlal örnekleri ve bunların nasıl düzeltileceğini gösterilmektedir.

using System;

class Example
{
    public void Method()
    {
        string text = "fwobz the fwutzle";

        //  Violation: allocations by Substring are wasteful.
        string s1 = text.Substring(10) + "---" + text.Substring(0, 5);

        //  Fixed: using AsSpan avoids allocations of temporary strings.
        string s2 = string.Concat(text.AsSpan(10), "---", text.AsSpan(0, 5));
    }
}

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

Bu kuraldan gelen uyarıları gizlemeyin. Ayıklanan alt dize yalnızca yayılım tabanlı eşdeğeri olan bir yönteme geçirildiğinde Substring kullanmak için bir neden yoktur.

Ayrıca bkz.