Compartilhar via


SYSLIB0055: AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* métodos com parâmetros assinados são obsoletos

Os seguintes métodos que aceitam números inteiros assinados estão obsoletos, começando no .NET 9:

Chamá-los no código gera aviso SYSLIB0055 em tempo de compilação.

Motivo da obsolescência

A instrução Arm Advanced SIMD UQRSHRN executa uma operação estreita saturada sem sinal. Como tal, o seu resultado é sempre sem sinal. No entanto, as APIs afetadas aceitaram e retornaram tipos assinados, o que significa que não funcionaram conforme o esperado se você seguisse a descrição da API em vez da descrição da instrução. Além disso, a implementação subjacente não pode ser corrigida para executar operações estreitas saturadas assinadas e retornar resultados assinados.

Solução alternativa

Converta intencionalmente os dados em tipos assinados e chame a sobrecarga não assinada correspondente, por exemplo, AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte). Em seguida, converta intencionalmente o resultado em um tipo assinado.

Suprimir um aviso

Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.

// Disable the warning.
#pragma warning disable SYSLIB0055

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

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

Para suprimir todos os avisos SYSLIB0055 no projeto, adicione uma propriedade <NoWarn> ao arquivo de projeto.

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

Para obter mais informações, confira Suprimir avisos.