Поделиться через


SYSLIB0055: методы AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* с подписанными параметрами устарели

Следующие методы, принимаюющие целые числа со знаком, устарели, начиная с .NET 9:

При вызове их в коде выдается предупреждение SYSLIB0055 во время компиляции.

Причина обсоления

Инструкция Arm Advanced SIMD UQRSHRN выполняет неназначенные насыщенные узкие операции. Таким образом, его результат всегда без знака. Однако затронутые API приняли и вернули подписанные типы, что означает, что они не работают должным образом, если вы выполнили описание API, а не описание инструкции. Кроме того, базовая реализация не может быть исправлена для выполнения подписанных насыщенных узких операций и возврата подписанных результатов.

Обходное решение

Намеренно преобразуйте данные в подписанные типы и вызовите соответствующую перегрузку без знака, например AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte). Затем намеренно преобразуйте результат в подписанный тип.

Отключение предупреждений

Если необходимо использовать устаревшие API, вы можете отключить предупреждение в коде или в файле проекта.

Чтобы отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить предупреждение.

// Disable the warning.
#pragma warning disable SYSLIB0055

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

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

Чтобы отключить все SYSLIB0055 предупреждения в проекте, добавьте <NoWarn> свойство в файл проекта.

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

Дополнительные сведения см. в разделе Отключение предупреждений.