Compartir a través de


SYSLIB0055: Los métodos AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* con parámetros con signo son obsoletos

Los siguientes métodos que aceptan enteros con signo son obsoletos, a partir de .NET 9:

Si se los llama en el código, se genera la advertencia SYSLIB0055 en tiempo de compilación.

Motivo de la obsolescencia

La instrucción Arm Advanced SIMD UQRSHRN realiza una operación estrecha saturada sin signo. Como tal, su resultado es siempre sin signo. Sin embargo, las API afectadas aceptaban y devolvían tipos con signo, lo que significa que no funcionaban como se esperaba si se seguía la descripción de la API en lugar de la descripción de la instrucción. Además, la implementación subyacente no puede corregirse para realizar operaciones estrechas saturadas con signo y devolver resultados con signo.

Solución alternativa

Convierta intencionadamente los datos a tipos con signo y llame en su lugar a la sobrecarga sin signo correspondiente, por ejemplo, AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte). Después, convierta intencionadamente el resultado a un tipo con signo.

Supresión de una advertencia

Si tiene que seguir usando las API obsoletas, puede suprimir la advertencia en el código o en el archivo de proyecto.

Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y luego volver a habilitar la advertencia.

// Disable the warning.
#pragma warning disable SYSLIB0055

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

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

Para suprimir todas las advertencias SYSLIB0055 del proyecto, agregue una propiedad <NoWarn> al archivo del proyecto.

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

Para obtener más información, vea Suprimir advertencias.