BrotliStream 不再允許未定義的 CompressionLevel 值
採用 CompressionLevel 引數的 BrotliStream 建構函式不再允許 CompressionLevel 列舉中未定義的值。 如果您傳遞不正確值,則會擲回 ArgumentException。
先前的行為
BrotliStream 可讓您將所需的層級直接轉換成 CompressionLevel,將任意壓縮層級傳遞至建構函式。 例如:
BrotliStream brotli = new BrotliStream(baseStream,
(CompressionLevel)5); // Use level 5
不過,如果提供任意層級,則會依原狀傳遞至基礎程式庫,因而產生不一致且可能是未預期的行為。
新的行為
BrotliStream 只允許 CompressionLevel 中定義的值。 如果您將未定義的值傳遞至建構函式,則會擲回 ArgumentException。
導入的版本
.NET 7
中斷性變更的類型
這項變更會影響二進位相容性。
變更原因
CompressionLevel 列舉的目的是要讓開發人員使用壓縮演算法,而不需要了解其微調參數的意義。
如果提供任意層級,則會依原樣傳遞至基礎程式庫,導致不一致且可能未預期的行為。 透過這項變更,行為會與其他壓縮資料流程一致,例如 DeflateStream。
透過新的 CompressionLevel 值微調和新增 CompressionLevel.SmallestSize,現在可以在壓縮演算法中擁有各種取捨。 使用者可以繼續依賴 CompressionLevel 值做為這類取捨的抽象概念。
建議的動作
如果您依賴傳遞未定義的值作為 CompressionLevel,請重新檢視您的使用案例,並決定哪一個記載的值是最為適合。