Megosztás a következőn keresztül:


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.