ジェネリック数値演算のシフト操作で、すべての組み込み整数型で一貫した動作が行われるようになりました。
以前の動作
以前は、ジェネリック数学を使用して T のシフトを実行する場合の動作は、型によって異なる場合がありました。 場合によっては、シフト量を sizeof(T) - 1により適宜マスクした。 それ以外の場合は、マスクがありませんでした。 つまり、"オーバーシフト" (byte を 8 にシフトするなど) によって、予想とは異なる回答が得られます。
新しい動作
すべての組み込み整数型と、System.Numerics.IShiftOperators<TSelf,TOther,TResult> インターフェイスによって文書化された動作で一貫した動作を確保するために、必要に応じてシフト量をマスクするように実装が更新されました。
導入されたバージョン
.NET 10
破壊的変更の種類
この変更は 動作変更です。
変更の理由
C# の小さな整数型に対するマスクの動作が異なるため、動作は設計された動作とは異なります。
推奨されるアクション
以前の一貫性のない動作に依存するコードを更新して、新しい一貫性のある動作で動作するようにします。
影響を受ける API
operator <<operator >>-
operator >>>、byte、char、sbyte、およびshortのushort。汎用数学を使用する場合は、Tをwhere T : IShiftOperators<T, int, T>または同様のインターフェイスに制限する必要があります。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET