前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CA2018:Buffer.BlockCopy的 count 参数应指定要复制的字节数

CA2018:Buffer.BlockCopy的 count 参数应指定要复制的字节数

作者头像
用户4268038
发布2022-02-20 19:39:35
3800
发布2022-02-20 19:39:35
举报
文章被收录于专栏:stcnbstcnb

规则 ID

CA2018

类别

可靠性

修复是中断修复还是非中断修复

非中断

原因

当对元素大小大于一个字节的数组上 Buffer.BlockCopy 的 count 参数使用 Array.Length 时,将触发此规则。

规则说明

使用 Buffer.BlockCopy 时,count 参数指定要复制的字节数。 应仅对元素大小正好为一个字节的数组将 Array.Length 用于 count 参数。 byte、sbyte 和 bool 数组具有大小为一个字节的元素。

如何解决冲突

指定要为 count 参数复制的字节数。

示例

冲突:

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);

}

}

修复:

如果数组元素的大小大于一个字节,则可以通过将数组的长度乘以元素的大小来获得字节数。

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));

}

}

何时禁止显示警告

禁止显示基于此规则的警告通常是不安全的。

另请参阅

可靠性规则

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档