Megosztás a következőn keresztül:


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.BlockCopyaz 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.

Lásd még