Share via


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 u řetězců volání založených 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.