SYSLIB0055: AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate*-methoden met ondertekende parameters zijn verouderd
De volgende methoden die ondertekende gehele getallen accepteren, zijn verouderd vanaf .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)
Als u deze in code aanroept, wordt er een waarschuwing SYSLIB0055
gegenereerd tijdens het compileren.
Reden voor verdoezeling
De Arm Advanced SIMD-instructie UQRSHRN
voert een niet-ondertekende verzadigingssmale bewerking uit. Als zodanig is het resultaat altijd niet ondertekend. De betrokken API's hebben echter ondertekende typen geaccepteerd en geretourneerd, wat betekent dat ze niet werken zoals verwacht als u de API-beschrijving hebt gevolgd in plaats van de instructiebeschrijving. Bovendien kan de onderliggende implementatie niet worden gecorrigeerd om ondertekende verzadigingsbewerkingen uit te voeren en ondertekende resultaten te retourneren.
Tijdelijke oplossing
Converteer de gegevens opzettelijk naar ondertekende typen en roep in plaats daarvan de bijbehorende niet-ondertekende overbelasting aan, AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte)bijvoorbeeld. Converteer het resultaat vervolgens opzettelijk naar een ondertekend type.
Een waarschuwing onderdrukken
Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.
// Disable the warning.
#pragma warning disable SYSLIB0055
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0055
Als u alle SYSLIB0055
waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn>
eigenschap toe aan het projectbestand.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0055</NoWarn>
</PropertyGroup>
</Project>
Zie Waarschuwingen onderdrukken voor meer informatie.