2013-04-09 27 views
1

我有一個從函數到函數傳遞的MemoryStream對象,並且每個函數都向它添加了一些東西(可能是字節可能更多)。
閱讀中有匹配的功能。避免將偏移量傳遞給C#MemoryStream寫入

我可以避免自己更新偏移量並讓「流」處理它嗎?
(如stream.Write(byte[]);類似stream.WriteByte(byte);

我有點從所有文檔困惑在該地區

+3

這些偏移量進入你的字節數組,而不是進入流。所以我不知道你爲什麼要更新偏移量。如果你想寫一個完整的數組,只需將偏移量設置爲0,並將長度設置爲數組的長度。 – CodesInChaos 2013-04-09 09:49:11

+0

@CodesInChaos +1,也許你可以寫這個作爲答案,我強烈懷疑它實際上是OP的問題的來源(緩衝區和流的偏移量之間的混淆) – ken2k 2013-04-09 09:51:40

+0

哦......的確......我的確認爲偏移量是流本身...謝謝你們... – Boaz 2013-04-09 09:58:39

回答

1

是的,你可以創建一個extension method始終將偏移設置爲0(即從寫緩衝區中的零索引)。

public static class Extensions 
{ 
    public static void Write(this MemoryStream stream, byte[] buffer) 
    { 
     stream.Write(buffer, 0, buffer.Length); 
    } 
} 
0

是的,你可以避免傳遞偏移量。

當您寫入內存流時,其Position屬性會增加寫入項目的大小,因此寫入的下一個將會在前一個之後。

因此,您可以傳遞內存流。