偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处

 错误场景:

在使用FileStream对象打开一个文件,想读到缓存中。由于缓存大小为1KB,所以需要分次读入。但在使用FIleStream.Read()方法时,

错误代码:

byte[] sendBuf=new byte[m_nBlockSize];
int nRead=readFile.Read(sendBuf, nOffset, m_nBlockSize);

当nOffset=1时,总是直接抛出错误:偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处

错误原因:

没有看清楚各个参数的意思。

FileStream

public override int Read(
	byte[] array,
	int offset,
	int count
)

其中:

array

类型:array<System..::.Byte>[]()[]

此方法返回时包含指定的字节数组,数组中 offset 和 (offset +count - 1) 之间的值被从当前源中读取的字节替换。

offset

类型:System..::.Int32

array 中的字节偏移量,将在此处开始读取字节。

count

类型:System..::.Int32

最多读取的字节数。

刚开始错误的以为,offset是文件流的便宜量,所以导致了此错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值