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 argumentumnak az Buffer.BlockCopy másolandó bájtok számát kell megadnia |
| Kategória | Megbízhatóság |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Figyelmeztetésként |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
Ez a szabály akkor aktiválódik, amikor a Array.Length-t a Buffer.BlockCopycount argumentumaként használják olyan tömbökben, amelyek elemei egy bájtnál nagyobb méretűek.
Szabály leírása
Buffer.BlockCopy használata esetén az count argumentum határozza meg a másolandó bájtok számát. 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.