Partager via


Comportement de décalage cohérent dans les mathématiques de type générique

Les opérations de décalage dans les mathématiques génériques ont désormais un comportement cohérent sur tous les types entiers intégrés.

Comportement précédent

Le comportement lors de l’utilisation de mathématiques génériques pour effectuer un décalage sur un T peut différer en fonction du type. Dans certains cas, il en résulte un masquage approprié de la quantité de décalage de sizeof(T) - 1. Et dans d’autres cas, il n’y avait pas de masquage. Cela signifie qu'un « sur-décalage » (par exemple, le décalage d'une byte de 8) pourrait entraîner des réponses différentes de celles attendues.

Nouveau comportement

Les implémentations ont été mises à jour pour masquer la quantité de décalage, le cas échéant, pour garantir un comportement cohérent entre tous les types entiers intégrés et avec le comportement documenté par l’interface System.Numerics.IShiftOperators<TSelf,TOther,TResult>.

Version introduite

.NET 10 Preview 1

Type de changement cassant

Ce changement est un changement comportemental .

Raison de la modification

Le comportement diffère du comportement conçu en raison d’une différence dans la façon dont le masquage fonctionne pour les petits types entiers en C#.

Mettez à jour tout code qui s’appuie sur le comportement incohérent précédent pour vous assurer qu’il fonctionne avec le nouveau comportement cohérent.

API affectées

  • operator <<
  • operator >>
  • operator >>> pour byte, char, sbyte, shortet ushort lorsqu'il est utilisé dans le cadre de mathématiques génériques, ce qui nécessite une T contrainte à where T : IShiftOperators<T, int, T> ou à une interface similaire.