Bagikan melalui


CA1834: Menggunakan StringBuilder.Append(char) untuk string karakter tunggal

Properti Nilai
ID Aturan CA1834
Judul Menggunakan StringBuilder.Append(char) untuk string karakter tunggal
Golongan Performa
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

Aturan ini diaktifkan ketika string panjang unit diteruskan ke metode Append.

Deskripsi aturan

Saat memanggil StringBuilder.Append dengan string panjang unit, pertimbangkan untuk menggunakan const char daripada const string panjang unit untuk meningkatkan performa.

Cara memperbaiki pelanggaran

Pelanggaran dapat diperbaiki secara manual, atau, dalam beberapa kasus, menggunakan Tindakan Cepat untuk memperbaiki kode di Visual Studio. Contoh:

Contoh 1

Pemanggilan StringBuilder.Append dengan string harfiah panjang unit:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("a");
        }
    }
}

Tip

Perbaikan kode tersedia untuk aturan ini di Visual Studio. Untuk menggunakannya, posisikan kursor pada pelanggaran dan tekan Ctrl+. (titik). Pilih Pertimbangkan untuk menggunakan 'StringBuilder.Append(char)' jika berlaku. dari daftar opsi yang disajikan.

Code fix for CA1834 - Use StringBuilder.Append(char) for single character strings

Perbaikan diterapkan oleh Visual Studio:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append('a');
        }
    }
}

Dalam beberapa kasus, misalnya saat menggunakan bidang kelas const string panjang unit, perbaikan kode tidak disarankan oleh Visual Studio (tetapi penganalisis masih diaktifkan). Instans ini memerlukan perbaikan manual.

Contoh 2

Pemanggilan StringBuilder.Append dengan bidang kelas const string panjang unit:

using System;
using System.Text;

namespace TestNamespace
{
    public class Program
    {
        public const string unitString = "a";

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(unitString);
        }
    }
}

Setelah analisis yang cermat, unitString di sini dapat diubah menjadi char tanpa menyebabkan kesalahan build apa pun.

using System;
using System.Text;

namespace TestNamespace
{
    public class Program
    {
        public const char unitString = 'a';

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(unitString);
        }
    }
}

Kapan harus menekan peringatan

Aman untuk menyembunyikan pelanggaran aturan ini jika Anda tidak khawatir tentang meningkatkan performa saat menggunakan StringBuilder.

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 CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga