CA1872: A "Convert.ToHexString" és a "Convert.ToHexStringLower" helyett a "BitConverter.ToString" alapú hívásláncok
Érték | |
---|---|
Szabályazonosító | CA1872 |
Cím | A "Convert.ToHexString" és a "Convert.ToHexStringLower" helyett inkább a "BitConverter.ToString" alapú hívásláncokat részesítse előnyben |
Kategória | Teljesítmény |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 9-ben | Javaslatként |
Ok
A kötőjelek eltávolítására String.Replace irányuló hívás BitConverter.ToString a bájtok hexadecimális sztringre történő kódolására szolgál. Ez a szabály akkor is aktiválódik, ha String.ToLower a hívásláncban használják.
Szabály leírása
Bájtok hexadecimális sztringre való kódolása vagy Convert.ToHexStringLower kódolásaConvert.ToHexString. Ezek a módszerek hatékonyabbak és kiosztásbarátabbak, mint BitConverter.ToStringString.Replace a kötőjelek és String.ToLowera .
Szabálysértések kijavítása
A szabály megsértésének kijavításához cserélje le a hívásláncot a következőre: vagy Convert.ToHexStringConvert.ToHexStringLower.
Példa
A következő kódrészlet a CA1872 megsértését mutatja be:
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
A következő kódrészlet kijavítja a szabálysértést:
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
Mikor kell letiltani a figyelmeztetéseket?
A szabályból származó figyelmeztetéseket nyugodtan el lehet tiltani; azonban azt javasoljuk, hogy vagy Convert.ToHexStringConvert.ToHexStringLowera .
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1872
// The code that's violating the rule is on this line.
#pragma warning restore CA1872
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1872.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.