Dela via


SYSLIB0055: AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metoder med signerade parametrar är föråldrade

Följande metoder som accepterar signerade heltal är föråldrade, med början i .NET 9:

Att anropa dem i kod genererar en varning SYSLIB0055 vid kompileringstillfället.

Orsak till obsoletion

Arm Advanced SIMD-instruktionen UQRSHRN utför en osignerad, mättad smal åtgärd. Resultatet är därför alltid osignerat. De berörda API:erna accepterade och returnerade signerade typer, vilket innebär att de inte fungerade som förväntat om du följde API-beskrivningen i stället för instruktionsbeskrivningen. Dessutom kan den underliggande implementeringen inte korrigeras för att utföra signerade mättade smala åtgärder och returnera signerade resultat.

Lösning

Konvertera data avsiktligt till signerade typer och anropa motsvarande osignerade överlagring i stället, till exempel AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte). Konvertera sedan resultatet avsiktligt till en signerad typ.

Ignorera en varning

Om du måste använda föråldrade API:er kan du ignorera varningen i koden eller i projektfilen.

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.

// Disable the warning.
#pragma warning disable SYSLIB0055

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

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

Om du vill ignorera alla SYSLIB0055 varningar i projektet lägger du till en <NoWarn> egenskap i projektfilen.

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

Mer information finns i Utelämna varningar.