私はこれは非常に興味深い(感謝)と明らかに人々はすでに投票をしておりますので、質問を更新したくなかったが、この部分に:)
を好きではないことは、思考の違いを示していライブラリスタイルのコードとアプリケーションのコード
したがって、Stream
をAPI用に準備するアプリケーションの責任がある場合(それは私たちすべてが同意すると思われます)、有用なロジックをアプリ内の拡張メソッドに「持ち上げる」ことができます。
/// <summary>
/// Tries to set the stream to position 0 if required.
/// </summary>
/// <returns>
/// False if the stream is not at position 0 and does not support seek operations.
/// </returns>
public static bool TrySetPositionZero(this Stream stream)
{
if (stream.Position > 0)
{
if (stream.CanSeek)
{
stream.Position = 0;
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
これと単にstream.Position = 0
の違いは、それがすでに位置0
であなたは「周りのコピー」とは何を意味しないとき、それは順方向のみに成功しますので、成功のより多くのチャンスが流れているということでしょうか? –
+1。私は今からピアレビューで*社会的に受け入れられると言うつもりです。 – Renan
@HenkHolterman例えば、着信ストリームを使用する前に、 'stream.CopyTo(copy);'のように。 –