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:
- 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.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk