Dela via


Experimentella funktioner i .NET 9+

Från och med .NET 9 använder ExperimentalAttribute vissa funktioner för att indikera att API-formen eller funktionerna ingår i versionen men ännu inte stöds officiellt. Med experimentella funktioner kan .NET-teamet samla in feedback om ett API:s form och funktioner med avsikten att förfina API:et och ta bort [Experimental] attributet i nästa större version.

När koden refererar till ett experimentellt API skapar kompilatorn ett fel med ett ID som SYSLIB5XXX. Varje funktion som är markerad som experimentell har ett unikt diagnostik-ID. För att uttrycka sitt medgivande till att använda en experimentell funktion undertrycker du den specifika diagnostiken. Du kan göra det via något av sätten att förhindra diagnostik, men det rekommenderade sättet är att lägga till diagnostiken i projektets <NoWarn> egenskap. Mer information finns i Utelämna varningar.

Eftersom varje experimentell funktion har ett separat ID samtycker samtycke till att använda en experimentell funktion inte att använda en annan.

Referens

Följande tabell innehåller ett index för de SYSLIB5XXX experimentella API:erna i .NET 9+.

Diagnostik-ID Experimentell version beskrivning
SYSLIB5001 .NET 9 Tensor<T> relaterade API:er i System.Numerics.Tensors är experimentella
SYSLIB5002 .NET 9 SystemColors alternativa färger är experimentella
SYSLIB5003 .NET 9 Sve är experimentell
SYSLIB5004 .NET 9 DivRem(UInt32, Int32, Int32) är experimentell eftersom prestandan inte är lika optimerad som T.DivRem
SYSLIB5005 .NET 9 System.Formats.Nrbf är experimentell

Ignorera varningar

Med hjälp av en experimentell funktion kan du skicka feedback om API-formen och -funktionerna innan funktionen markeras som stabil och stöds fullt ut. Men om du använder funktionen genereras en varning från kompilatorn. När du undertrycker varningen bekräftar du att API-formen eller funktionerna kan ändras i nästa större version. API:et kan till och med tas bort. Du kan ignorera varningen via en <NoWarn> projektinställning (rekommenderas) eller ett #pragma direktiv i kod.

Så här utelämnar du varningarna i en projektfil:

<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>

Så här utelämnar du varningarna i koden:

// 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

Se även