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.
CA2018: için
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA2018 |
| Başlık | öğesinin countBuffer.BlockCopy bağımsız değişkeni, kopyalanacak bayt sayısını belirtmelidir |
| Kategori | Güvenilirlik |
| Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
| .NET 10'da varsayılan olarak etkin | Uyarı olarak |
Neden
Bu kural, öğeleri boyutu bir bayttan büyük olan dizilerde bağımsız değişkeni Array.Length için count kullanıldığında tetiklenirBuffer.BlockCopy.
Kural açıklaması
kullanılırken Buffer.BlockCopycount bağımsız değişkeni kopyalanacak bayt sayısını belirtir. Yalnızca öğeleri tam olarak bir bayt boyutunda olan dizilerde bağımsız değişken için Array.Length kullanmalısınızcount.
byte, sbyteve bool dizileri tek bayt boyutunda öğelere sahiptir.
İhlalleri düzeltme
Bağımsız değişken için count kopyalamak istediğiniz bayt sayısını belirtin.
Örnek
İhlal:
using System;
class Program
{
static void Main()
{
int[] src = new int[] {1, 2, 3, 4};
int[] dst = new int[] {0, 0, 0, 0};
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
}
}
Düzeltme:
Dizinizin öğelerinin boyutu bir bayttan büyükse, bayt sayısını almak için dizinin uzunluğunu öğe boyutuyla çarpabilirsiniz.
using System;
class Program
{
static void Main()
{
int[] src = new int[] {1, 2, 3, 4};
int[] dst = new int[] {0, 0, 0, 0};
Buffer.BlockCopy(src, 0, dst, 0, src.Length * sizeof(int));
}
}
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan gelen bir uyarıyı engellemek genellikle GÜVENLI DEĞİlDİr.