1

.Net MemoryStream クラスの使用法を理解しようとしています。ストリームがビジーであるため、一時的な動的な長さのバイナリ データを格納する必要があります。そのため、メモリ ストリームを割り当て、そのデータを一時的に書き込みます。ストリームが解放されると、メモリストリームからすべてのデータを読み取り、データを書き込みます。これを行うには、位置ポインターを 0 に設定します。

つまり、mDataBuffer.Position=0;

ただし、メモリストリームクラスは、読み取り後にデータを破棄しないようです。次回は以前と同じデータを取得します。私がこのサンプルプログラムを書いたことを確認するために

        MemoryStream ms = new MemoryStream();
        ms.WriteByte((byte)1);
        ms.Position = 0;
        Console.WriteLine(ms.ReadByte());
        ms.WriteByte((byte)4);
        ms.Position = 0;
        Console.WriteLine(ms.ReadByte());

驚いたことに、(1,4) の出力を期待していましたが、出力は (1,1) でした。

私はこのメモリストリームの動作に本当に困惑しています。誰でも光を当てることができますか?また、これが通常の動作である場合、ストリームから過去のデータを削除するにはどうすればよいですか。

前もってありがとう、vaibhav

4

1 に答える 1

4

コードは次のように変換できます。 * オブジェクトを作成する * 位置 0 に 1 を書き込む * 位置 0 を読み取って (1) を出力する * 位置 1 に 4 を書き込む * 位置 0 を読み取って (1) を出力する

ms.writebyte((byte)4) 行の上に ms.Position=0 を挿入することで修正できます。

于 2009-09-30T13:14:11.450 に答える