SYSLIB0055: Az AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metódusok aláírt paraméterekkel elavultak

Az aláírt egész számokat elfogadó alábbi metódusok elavultak, a .NET 9-től kezdve:

A kódban való meghívás figyelmeztetést SYSLIB0055 generál fordításkor.

A kényszer okának oka

Az Arm Advanced SIMD UQRSHRN utasítás aláíratlan telített keskeny műveletet hajt végre. Így az eredmény mindig aláíratlan. Az érintett API-k azonban elfogadtak és visszaadtak aláírt típusokat, ami azt jelenti, hogy nem a várt módon működtek, ha az utasítás leírása helyett az API-leírást követte. Emellett az alapul szolgáló implementáció nem javítható az aláírt telített szűk műveletek végrehajtásához és az aláírt eredmények visszaadásához.

Áthidaló megoldás

Szándékosan alakítsa át az adatokat aláírt típusokká, és hívja meg helyette a megfelelő aláíratlan túlterhelést, AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte)például. Ezután szándékosan konvertálja az eredményt aláírt típussá.

Figyelmeztetés mellőzése

Ha az elavult API-kat kell használnia, letilthatja a figyelmeztetést a kódban vagy a projektfájlban.

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz, hogy letiltsa, majd engedélyezze újra a figyelmeztetést.

// Disable the warning.
#pragma warning disable SYSLIB0055

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0055

Ha el szeretné tiltani a SYSLIB0055 projekt összes figyelmeztetését, adjon hozzá egy tulajdonságot <NoWarn> a projektfájlhoz.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0055</NoWarn>
  </PropertyGroup>
</Project>

További információ: Figyelmeztetések mellőzése.