之间的差异我正在寻找一个BinaryReader.Skip函数,当我遇到这feature request on msdn。 他说你可以通过使用这个提供你自己的BinaryReader.Skip()函数。多个BinaryReader.Read()和BinaryReader.ReadBytes(int i)
只盯着这个代码,我不知道他为什么选择这种方式来跳过一定量的字节:
for (int i = 0, i < count; i++) {
reader.ReadByte();
}
是否有之间的区别:
reader.ReadBytes(count);
即使如果它只是一个小的优化,我想要展开。因为现在它对我来说没有意义,为什么你会使用for循环。
public void Skip(this BinaryReader reader, int count) {
if (reader.BaseStream.CanSeek) {
reader.BaseStream.Seek(count, SeekOffset.Current);
}
else {
for (int i = 0, i < count; i++) {
reader.ReadByte();
}
}
}
虽然这对我没有任何意义。为什么ReadBytes会更快? – 2010-11-02 15:11:20
@Timo,如果字节数足够大,您将获得块存储器副本和更少的总方法调用。 ReadByte是虚拟的,可以添加少量的开销。这两种方式都不会有很大的差别。 – 2010-11-02 15:16:53
@Dan,@Timo:它将向底层流发出较少的请求。从磁盘读取数据时,这可能会有所帮助。 – SLaks 2010-11-02 15:18:15