CA1872: Prefer 'Convert.ToHexString' en 'Convert.ToHexStringLower' over oproepketens op basis van 'BitConverter.ToString'
Weergegeven als | |
---|---|
Regel-id | CA1872 |
Titel | Voorkeur Convert.ToHexString en Convert.ToHexStringLower over gespreksketens op basis van BitConverter.ToString |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Een aanroep die BitConverter.ToString wordt gevolgd door een aanroep om streepjes te String.Replace verwijderen, wordt gebruikt om bytes te coderen naar een hexadecimale tekenreeksweergave. Deze regel wordt ook geactiveerd als String.ToLower deze wordt gebruikt in de aanroepketen.
Beschrijving van regel
Gebruik Convert.ToHexString of Convert.ToHexStringLower bij het coderen van bytes aan een hexadecimale tekenreeksweergave. Deze methoden zijn efficiënter en toewijzingsvriendelijk dan het gebruik BitConverter.ToString in combinatie met String.Replace het verwijderen van streepjes en String.ToLower.
Schendingen oplossen
Als u een schending van deze regel wilt oplossen, vervangt u de aanroepketen door Convert.ToHexString of Convert.ToHexStringLower.
Opmerking
Het volgende codefragment toont een schending van 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
Met het volgende codefragment wordt de schending opgelost:
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
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken; het is echter raadzaam dat u een Convert.ToHexString van beide of Convert.ToHexStringLower.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1872
// The code that's violating the rule is on this line.
#pragma warning restore CA1872
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1872.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.