次の方法で共有


一般的な数学における一貫したシフト動作

ジェネリック数値演算のシフト操作で、すべての組み込み整数型で一貫した動作が行われるようになりました。

以前の動作

以前は、ジェネリック数学を使用して T のシフトを実行する場合の動作は、型によって異なる場合がありました。 場合によっては、シフト量を sizeof(T) - 1により適宜マスクした。 それ以外の場合は、マスクがありませんでした。 つまり、"オーバーシフト" (byte を 8 にシフトするなど) によって、予想とは異なる回答が得られます。

新しい動作

すべての組み込み整数型と、System.Numerics.IShiftOperators<TSelf,TOther,TResult> インターフェイスによって文書化された動作で一貫した動作を確保するために、必要に応じてシフト量をマスクするように実装が更新されました。

導入されたバージョン

.NET 10

破壊的変更の種類

この変更は 動作変更です。

変更の理由

C# の小さな整数型に対するマスクの動作が異なるため、動作は設計された動作とは異なります。

以前の一貫性のない動作に依存するコードを更新して、新しい一貫性のある動作で動作するようにします。

影響を受ける API

  • operator <<
  • operator >>
  • operator >>>bytecharsbyte、および shortushort。汎用数学を使用する場合は、Twhere T : IShiftOperators<T, int, T> または同様のインターフェイスに制限する必要があります。