初期ストリームにあるデータをいじりたくない場合は、次のようなものは機能しません。
var myStreamInitially = new MemoryStream();
var myStreamClone = new MemoryStream();
myStreamInitially.CopyTo(myStreamClone);
var binaryWriteb = new BinaryWriter(myStreamClone);
.NET 4+ を使用している場合、CopyTo メソッドは非常に便利です。
アップデート
これは baseStream の基礎となる binaryStream を変更するよりも安全ではありませんか?
void WriteToStreamInUnknownStatus(BinaryWriter binaryWriter)
{
var myStream = new MemoryStream();
try
{
binaryWriter.Write(myStream.ToArray());
}
catch
{ }
}
更新 2
これを試みると、「メモリ ストリームは展開できません」という例外が発生します。
static void Main(string[] args)
{
var binaryWrite = new BinaryWriter(new MemoryStream(new byte[] {1, 2, 3, 4}));
binaryWrite.Seek(3, SeekOrigin.Begin);
var position = binaryWrite.BaseStream.Position;
new MemoryStream(new byte[] {1, 2, 3, 4}).CopyTo(binaryWrite.BaseStream);
position = binaryWrite.BaseStream.Position;
}
そのため、プロパティがスレッドセーフであることを確認する必要があることに加えて、内部ストリームのタイプも知る必要があります。IMOを危険にさらす。