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.
CA2018: A
| 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 10-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.BlockCopyaz count argumentum a másolandó bájtok számát adja meg. Csak olyan Array.Length tömbök argumentumához használhatócount, 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.