Экспериментальные функции в .NET 9+
Начиная с .NET 9, некоторые функции используются ExperimentalAttribute для указания того, что форма или функциональность API включены в выпуск, но еще не поддерживаются официально. Экспериментальные функции позволяют команде .NET собирать отзывы о форме и функциональности API с целью уточнения API и удаления атрибута [Experimental]
в следующем крупном выпуске.
Когда код ссылается на экспериментальный API, компилятор создает ошибку с идентификатором, например SYSLIB5XXX
. Каждая функция, помеченная как экспериментальная, имеет уникальный идентификатор диагностики. Чтобы выразить согласие на использование экспериментальной функции, вы подавляете определенную диагностику. Это можно сделать с помощью любого из средств подавления диагностика, но рекомендуется добавить диагностику в свойство проекта<NoWarn>
. Дополнительные сведения см. в разделе Отключение предупреждений.
Так как каждая экспериментальная функция имеет отдельный идентификатор, согласие на использование одной экспериментальной функции не дает согласия на использование другого.
Справочные материалы
В следующей таблице представлен индекс SYSLIB5XXX
экспериментальных API в .NET 9+.
ИД диагностики | Экспериментальная версия | Description |
---|---|---|
SYSLIB5001 | .NET 9 | Tensor<T> и связанные API в System.Numerics.Tensors них являются экспериментальными |
SYSLIB5002 | .NET 9 | SystemColors альтернативные цвета являются экспериментальными |
SYSLIB5003 | .NET 9 | Sve экспериментальный |
SYSLIB5004 | .NET 9 |
DivRem(UInt32, Int32, Int32) является экспериментальным, так как производительность не так оптимизирована, как T.DivRem |
SYSLIB5005 | .NET 9 | System.Formats.Nrbf экспериментальный |
Отключение предупреждений
Использование экспериментальной функции дает возможность отправлять отзывы о форме и функциональности API, прежде чем эта функция помечена как стабильная и полностью поддерживаемая. Но использование функции создает предупреждение от компилятора. При подавлении предупреждения вы признаете, что форма или функциональность API могут измениться в следующем основном выпуске. API может быть удален даже. Предупреждение можно отключить с помощью <NoWarn>
параметра проекта (рекомендуется) или директивы в коде #pragma
.
Чтобы отключить предупреждения в файле проекта:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<!-- NoWarn below suppresses SYSLIB5001 project-wide -->
<NoWarn>$(NoWarn);SYSLIB5001</NoWarn>
<!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
<NoWarn>$(NoWarn);SYSLIB5002</NoWarn>
<NoWarn>$(NoWarn);SYSLIB5003</NoWarn>
<!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
<NoWarn>$(NoWarn);SYSLIB5001;SYSLIB5002;SYSLIB5003</NoWarn>
</PropertyGroup>
</Project>
Чтобы отключить предупреждения в коде:
// Disable the warning.
#pragma warning disable SYSLIB5001
// Code that uses an experimental API that produces the diagnostic SYSLIB5001
//...
// Re-enable the warning.
#pragma warning restore SYSLIB5001