CA2018 : l’argument count
à Buffer.BlockCopy
doit spécifier le nombre d’octets à copier
Propriété | Value |
---|---|
Identificateur de la règle | CA2018 |
Titre | L’argument count vers Buffer.BlockCopy doit spécifier le nombre d’octets à copier |
Catégorie | Fiabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | À titre d’avertissement |
Cause
Cette règle se déclenche lorsque Array.Length
est utilisée pour l’argument count
de Buffer.BlockCopy
sur des tableaux dont les éléments ont une taille supérieure à un octet.
Description de la règle
Lors de l’utilisation de Buffer.BlockCopy
, l’argument count
spécifie le nombre d’octets à copier. Vous devez uniquement utiliser Array.Length
pour l’argument count
sur les tableaux dont les éléments sont exactement un octet de taille. Les tableaux byte
, sbyte
et bool
ont des éléments d’une taille d’un octet.
Comment corriger les violations
Spécifiez le nombre d’octets que vous envisagez de copier pour l’argument count
.
Exemple
Violation :
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);
}
}
Correctif :
Si les éléments de votre tableau sont supérieurs à un octet, vous pouvez multiplier la longueur du tableau par la taille de l’élément pour obtenir le nombre d’octets.
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));
}
}
Quand supprimer les avertissements
Il n’est généralement PAS sûr de supprimer un avertissement de cette règle.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour