CA1872: Upřednostněte convert.ToHexString a Convert.ToHexStringLower u řetězců volání založených na BitConverter.ToString
Hodnota | |
---|---|
ID pravidla | CA1872 |
Název | Preferovat Convert.ToHexString a Convert.ToHexStringLower přes volat řetězy založené na BitConverter.ToString |
Kategorie | Výkon |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako návrh |
Příčina
Volání následované BitConverter.ToString voláním k String.Replace odebrání pomlček se používá ke kódování bajtů do šestnáctkové reprezentace řetězce. Toto pravidlo se také aktivuje, pokud String.ToLower se používá v řetězci volání.
Popis pravidla
Použijte Convert.ToHexString nebo Convert.ToHexStringLower při kódování bajtů na šestnáctkové řetězcové vyjádření. Tyto metody jsou efektivnější a alokační než použití BitConverter.ToString v kombinaci s String.Replace odstraněním pomlček a String.ToLower.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, nahraďte řetězec Convert.ToHexString volání buď nebo Convert.ToHexStringLower.
Příklad
Následující fragment kódu ukazuje porušení 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
Následující fragment kódu opraví porušení zásad:
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
Kdy potlačit upozornění
Je bezpečné potlačit upozornění z tohoto pravidla; doporučujeme však použít buď Convert.ToHexString nebo Convert.ToHexStringLower.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1872
// The code that's violating the rule is on this line.
#pragma warning restore CA1872
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA1872.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.