Aracılığıyla paylaş


Genel matematikte tutarlı kaydırma davranışı

Genel matematikteki shift işlemleri artık tüm yerleşik tamsayı türlerinde tutarlı davranışlara sahiptir.

Önceki davranış

Daha önce, bir T üzerinde kaydırma işlemi gerçekleştirmek için genel matematik kullanılırken davranış, türüne bağlı olarak farklılık gösterebilirdi. Bazı durumlarda vardiya miktarını uygun şekilde sizeof(T) - 1maskelemektedir. Ve diğer durumlarda maskeleme yoktu. Bu, "aşırı kaydırma" (örneğin bir byte'ı 8'e kaydırma) beklenenden farklı yanıtlara yol açabileceği anlamına geliyordu.

Yeni davranış

Uygulamalar, tüm yerleşik tamsayı türlerinde ve System.Numerics.IShiftOperators<TSelf,TOther,TResult> arabirimi tarafından belgelenen davranışla tutarlı bir davranış sağlamak için, kaydırma miktarını uygun şekilde maskelenecek şekilde güncellendi.

Sürüm kullanıma sunulmuştur

.NET 10

Kırıcı değişiklik türü

Bu değişiklik, bir davranış değişikliğidir.

Değişiklik nedeni

C# dilindeki küçük tamsayı türleri için maskelemenin çalışma şeklindeki fark nedeniyle davranış, tasarlanan davranıştan farklı oldu.

Yeni tutarlı davranışla çalıştığından emin olmak için önceki tutarsız davranışa dayalı tüm kodları güncelleştirin.

Etkilenen API'ler

  • operator <<
  • operator >>
  • operator >>>, byte, char, sbyteve short için ushort, T veya benzer bir arabirimle kısıtlanmış bir where T : IShiftOperators<T, int, T> gerektiren genel matematik aracılığıyla kullanıldığında.