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 'string' berbasis rentang. Concat' |
| Golongan | Performa |
| Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
| Diaktifkan secara default di .NET 10 | 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
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 digunakan Substring ketika AsSpan substring yang diekstraksi hanya diteruskan ke metode dengan setara berbasis rentang.