Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Érték | |
|---|---|
| Szabályazonosító | CA1872 |
| Cím | A hívásláncok előnyben részesítéséről Convert.ToHexString és Convert.ToHexStringLower a hívásláncok BitConverter.ToString |
| 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 10-ben | Javaslatként |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
A kötőjelek eltávolítására BitConverter.ToString irányuló hívás String.Replace 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.ToHexString kódolásaConvert.ToHexStringLower. 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.