次の方法で共有


BrotliStream では、未定義の CompressionLevel 値が許可されなくなりました

BrotliStream引数を受け取るCompressionLevel コンストラクターでは、CompressionLevel列挙型で定義されていない値が許可されなくなりました。 無効な値を渡すと、ArgumentException がスローされます。

以前の動作

BrotliStream を使用すると、目的のレベルを CompressionLevelに直接キャストすることで、任意の圧縮レベルをコンストラクターに渡すことができます。 例えば次が挙げられます。

BrotliStream brotli = new BrotliStream(baseStream,
                                       (CompressionLevel)5); // Use level 5

ただし、任意のレベルが指定された場合、それが基になるライブラリに as-is 渡され、一貫性がなく、予期しない動作になる可能性があります。

新しい動作

BrotliStream では、 CompressionLevelで定義されている値のみが許可されます。 未定義の値をコンストラクターに渡すと、ArgumentException がスローされます。

導入されたバージョン

.NET 7

破壊的変更の種類

この変更は 、バイナリの互換性に影響する可能性があります。

変更の理由

CompressionLevel列挙の目的は、開発者がチューニング パラメーターの意味を理解しなくても圧縮アルゴリズムを使用できるようにすることです。

任意のレベルが指定された場合、それが基になるライブラリに as-is 渡され、一貫性がなく、予期しない動作になる可能性があります。 この変更により、動作は他の圧縮ストリーム (たとえば、 DeflateStream) に合わせて調整されます。

CompressionLevel値の新しいチューニングとCompressionLevel.SmallestSizeの追加により、圧縮アルゴリズムでさまざまなトレードオフを持つことができるようになりました。 ユーザーは引き続き、このようなトレードオフの抽象化として CompressionLevel 値に依存できます。

未定義の値を CompressionLevelとして渡すことに頼っていた場合は、ユース ケースを見直し、ドキュメント化された値が最適かどうかを判断します。

影響を受ける API