Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Değer | |
|---|---|
| Kural Kimliği | CA1872 |
| Başlık | Bağlı olarak çağrı zincirlerini tercih edin Convert.ToHexString ve Convert.ToHexStringLower tercih edin BitConverter.ToString |
| Kategori | Performans |
| Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
Neden
BitConverter.ToString Baytları onaltılık dize gösterimine kodlamak String.Replace için kısa çizgileri kaldırma çağrısının ardından çağrısı kullanılır. Bu kural, çağrı zincirinde kullanılırsa String.ToLower da tetikler.
Kural açıklaması
Baytları onaltılık dize gösterimine kodlarken veya Convert.ToHexString kullanınConvert.ToHexStringLower. Bu yöntemler, ve tirelerini kaldırmak için ile birlikte BitConverter.ToString kullanmaktan String.Replace daha verimli ve String.ToLowerayırma dostudur.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için çağrı zincirini veya Convert.ToHexStringile Convert.ToHexStringLower değiştirin.
Örnek
Aşağıdaki kod parçacığı CA1872 ihlalini gösterir:
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şağıdaki kod parçacığı ihlali düzeltir:
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
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan gelen bir uyarıyı engellemek güvenlidir; ancak ya da Convert.ToHexStringConvert.ToHexStringLowerkullanmanızı öneririz.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1872
// The code that's violating the rule is on this line.
#pragma warning restore CA1872
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1872.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.