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:
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int64>, Byte)
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int16>, Byte)
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int16>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int64>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<SByte>, Vector128<Int16>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<Int16>, Vector128<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<Int32>, Vector128<Int64>, Byte)
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.