CA1872: Lebih suka 'Convert.ToHexString' dan 'Convert.ToHexStringLower' daripada rantai panggilan berdasarkan 'BitConverter.ToString'
Nilai | |
---|---|
ID Aturan | CA1872 |
Judul | Lebih suka 'Convert.ToHexString' dan 'Convert.ToHexStringLower' daripada rantai panggilan berdasarkan 'BitConverter.ToString' |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | Sebagai saran |
Penyebab
Panggilan untuk BitConverter.ToString diikuti oleh panggilan ke untuk String.Replace menghapus tanda hubung digunakan untuk mengodekan byte ke representasi string heksadesimal. Aturan ini juga diaktifkan jika String.ToLower digunakan dalam rantai panggilan.
Deskripsi aturan
Gunakan Convert.ToHexString atau Convert.ToHexStringLower saat mengodekan byte ke representasi string heksadesimal. Metode ini lebih efisien dan ramah alokasi daripada menggunakan BitConverter.ToString dalam kombinasi dengan String.Replace untuk menghapus tanda hubung dan String.ToLower.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, ganti rantai panggilan dengan Convert.ToHexString atau Convert.ToHexStringLower.
Contoh
Cuplikan kode berikut menunjukkan pelanggaran CA1872:
using System;
using System.Text;
class HelloWorldEncoder
{
private readonly byte[] _data = Encoding.ASCII.GetBytes("Hello World");
public string Encode()
{
return BitConverter.ToString(_data).Replace("-", "");
}
public string EncodeToLower()
{
return BitConverter.ToString(_data).Replace("-", "").ToLower();
}
}
Imports System
Imports System.Text
Class HelloWorldEncoder
Private ReadOnly _data As Byte() = Encoding.ASCII.GetBytes("Hello World")
Public Function Encode() As String
Return BitConverter.ToString(_data).Replace("-", "")
End Function
Public Function EncodeToLower() As String
Return BitConverter.ToString(_data).Replace("-", "").ToLower()
End Function
End Class
Cuplikan kode berikut memperbaiki pelanggaran:
using System;
using System.Text;
class HelloWorldEncoder
{
private readonly byte[] _data = Encoding.ASCII.GetBytes("Hello World");
public string Encode()
{
return Convert.ToHexString(data);
}
public string EncodeToLower()
{
return Convert.ToHexStringLower(data);
}
}
Imports System
Imports System.Text
Class HelloWorldEncoder
Private ReadOnly _data As Byte() = Encoding.ASCII.GetBytes("Hello World")
Public Function Encode() As String
Return Convert.ToHexString(data)
End Function
Public Function EncodeToLower() As String
Return Convert.ToHexStringLower(data)
End Function
End Class
Kapan harus menekan peringatan
Aman untuk menekan peringatan dari aturan ini; namun, kami sarankan Anda menggunakan atau Convert.ToHexStringConvert.ToHexStringLower.
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 CA1872
// The code that's violating the rule is on this line.
#pragma warning restore CA1872
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1872.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
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