Bagikan melalui


CA1845: Gunakan 'string.Concat' berbasis rentang

Properti Nilai
ID Aturan CA1845
Judul Gunakan 'string' berbasis rentang. Concat'
Golongan Performa
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

Aturan ini menemukan ekspresi perangkaian String.Concatstring yang berisi Substring panggilan dan menyarankan untuk mengganti Substring dengan AsSpan dan menggunakan kelebihan beban berbasis rentang .

Deskripsi aturan

Panggilan Substring menghasilkan salinan substring yang diekstrak. Dengan menggunakan AsSpan alih-alih Substring dan memanggil kelebihan beban string.Concat yang menerima rentang, 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 digunakan Substring ketika AsSpan substring yang diekstraksi hanya diteruskan ke metode dengan setara berbasis rentang.

Baca juga