之間的差異我正在尋找一個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