CA2018: A count
másolandó Buffer.BlockCopy
bájtok számát meghatározó argumentum
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2018 |
Cím | A count másolandó Buffer.BlockCopy bájtok számát meghatározó argumentum |
Kategória | Megbízhatóság |
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 | Figyelmeztetésként |
Ok
Ez a szabály akkor aktiválódik, ha Array.Length
olyan count
tömbök argumentumához Buffer.BlockCopy
használatos, amelyek elemei egy bájtnál nagyobb méretűek.
Szabály leírása
A használat során Buffer.BlockCopy
az count
argumentum a másolandó bájtok számát adja meg. Csak olyan count
tömbök argumentumához használhatóArray.Length
, amelyek elemei pontosan egy bájt méretűek. byte
, sbyte
és bool
a tömbök egy bájt méretű elemeket tartalmaznak.
Szabálysértések kijavítása
Adja meg, hogy hány bájtot szeretne másolni az count
argumentumhoz.
Példa
Szabálysértés:
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);
}
}
Javítás:
Ha a tömb elemei egy bájtnál nagyobbak, megszorozhatja a tömb hosszát az elem méretével a bájtok számának lekéréséhez.
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));
}
}
Mikor kell letiltani a figyelmeztetéseket?
Általában NEM biztonságos a szabály figyelmeztetésének mellőzése.