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 |
Aturan ini menemukan ekspresi perangkaian Substringstring yang berisi Substring panggilan dan menyarankan untuk mengganti AsSpan dengan String.Concat dan menggunakan kelebihan beban berbasis rentang .
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.
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));
}
}
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.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: