CA1845: Gunakan 'string.Concat' berbasis rentang

Properti Nilai
ID Aturan CA1845
Judul Gunakan metode 'string.Concat' yang berbasis rentang.
Kategori Performa
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Sebagai saran
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Aturan ini menemukan ekspresi perangkaian string yang mengandung Substring dan menyarankan mengganti Substring dengan AsSpan serta menggunakan overload yang berbasis rentang dari String.Concat.

Deskripsi aturan

Panggilan Substring menghasilkan salinan substring yang diekstrak. Dengan menggunakan AsSpan alih-alih Substring dan memanggil overload fungsi string.Concat yang menerima span, Anda dapat menghilangkan alokasi string yang tidak perlu.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran:

  1. Ganti perangkaian string dengan panggilan ke string.Concat, dan
  2. Ganti panggilan ke Substring dengan panggilan ke AsSpan.

Cuplikan kode berikut menunjukkan contoh pelanggaran, dan cara memperbaikinya.

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));
    }
}

Kapan harus menekan peringatan

Jangan menyembunyikan peringatan dari aturan ini. Tidak ada alasan untuk menggunakan Substring lebih dari AsSpan ketika substring yang diekstraksi dari AsSpan hanya diteruskan ke metode yang memiliki padanan berbasis rentang.

Lihat juga