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 | CA1863 |
| Judul | Menggunakan CompositeFormat |
| Golongan | Performa |
| Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
| Diaktifkan secara default di .NET 10 | No |
Penyebab
Panggilan kode String.Format(String, Object[]) atau StringBuilder.AppendFormat(String, Object[]) dengan static string format yang belum di-cache ke CompositeFormat instans.
Deskripsi aturan
Memproses string format selama proses runtime itu mahal. Aturan ini menemukan tempat dalam kode Anda di mana Anda dapat menyimpan dan menggunakan CompositeFormat instans sebagai argumen ke operasi pemformatan, daripada meneruskan string format asli. Instans CompositeFormat menguraikan string format komposit saat dibuat, yang berarti "jalur panas" pemformatan string dapat dijalankan jauh lebih cepat.
Cara memperbaiki pelanggaran
Buat instans CompositeFormat dengan memanggil CompositeFormat.Parse(String) dan meneruskannya ke String.Format(IFormatProvider, CompositeFormat, Object[]) atau StringBuilder.AppendFormat(IFormatProvider, CompositeFormat, Object[]) alih-alih string format asli.
Contoh
Contoh berikut menunjukkan dua pelanggaran aturan:
class C
{
private static readonly string StaticField = "Format one value: {0}";
static void Main()
{
_ = string.Format(StaticField, 42);
StringBuilder sb = new();
sb.AppendFormat(StaticField, 42);
}
}
Contoh berikut menunjukkan kode yang memperbaiki kedua pelanggaran:
class C
{
private static readonly CompositeFormat StaticField = CompositeFormat.Parse("Format one value: {0}");
static void Main()
{
_ = string.Format(null, StaticField, 42);
StringBuilder sb = new();
sb.AppendFormat(null, StaticField, 42);
}
}
Kapan harus menekan peringatan
Aman untuk menekan diagnostik dari aturan ini jika performa tidak menjadi perhatian.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA1863
// The code that's violating the rule is on this line.
#pragma warning restore CA1863
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1863.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.