Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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:
- Ganti perangkaian string dengan panggilan ke
string.Concat, dan - Ganti panggilan ke
Substringdengan 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 menggunakan Substring lebih dari AsSpan ketika substring yang diekstraksi dari AsSpan hanya diteruskan ke metode yang memiliki padanan berbasis rentang.