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 9 | Sebagai saran |
Penyebab
Aturan ini menemukan ekspresi perangkaian Substringstring yang berisi Substring panggilan dan menyarankan untuk mengganti AsSpan dengan String.Concat 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:
- Ganti perangkaian string dengan panggilan ke
string.Concat
, dan - Ganti panggilan ke
Substring
dengan panggilan keAsSpan
.
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.