Condividi tramite


SYSLIB0055: i metodi AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* con parametri con segno sono obsoleti

I metodi seguenti che accettano interi con segno sono obsoleti, con inizio in .NET 9:

La loro chiamata nel codice genera un avviso SYSLIB0055 in fase di compilazione.

Motivo dell'obsolescenza

L'istruzione UQRSHRN SIMD avanzata ARM esegue un'operazione narrow satura. Pertanto, il suo risultato è sempre senza segno. Tuttavia, le API interessate hanno accettato e hanno restituito tipi con segno, ovvero non hanno funzionato come previsto se è stata seguita la descrizione API al posto della descrizione dell'istruzione. Inoltre, l'implementazione sottostante non può essere corretta per eseguire operazioni narrow sature con segno e restituire risultati con segno.

Soluzione alternativa

Convertire intenzionalmente i dati in tipi con segno e chiamare l'overload senza segno corrispondente, ad esempio AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte). Quindi convertire intenzionalmente il risultato in un tipo firmato.

Eliminare un avviso

Se è necessario usare le API obsolete, è possibile eliminare l'avviso nel codice o nel file di progetto.

Per eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare l'avviso.

// Disable the warning.
#pragma warning disable SYSLIB0055

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

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

Per eliminare tutti gli avvisi SYSLIB0055 nel progetto, aggiungere una proprietà <NoWarn> al file di progetto.

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

Per altre informazioni, vedere Non visualizzare gli avvisi.