现在的位置: 首页 > 综合 > 正文

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

2013年08月17日 ⁄ 综合 ⁄ 共 520字 ⁄ 字号 评论关闭

 错误场景:

在使用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是文件流的便宜量,所以导致了此错误。

抱歉!评论已关闭.