Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In .NET 6 alcune annotazioni di nullità nelle librerie .NET sono state modificate.
Descrizione delle modifiche
Nelle versioni precedenti di .NET alcune annotazioni di tipo riferimento nullable non sono corrette e gli avvisi di compilazione sono assenti o non corretti. A partire da .NET 6, alcune annotazioni applicate in precedenza sono state aggiornate. Verranno generati nuovi avvisi di compilazione e non verranno più generati avvisi di compilazione non corretti per le API interessate.
Alcune di queste modifiche vengono considerate di rilievo perché possono causare nuovi avvisi in fase di compilazione. Quando si esegue la migrazione a .NET 6, è necessario aggiornare il codice che fa riferimento a queste API.
In questa pagina sono documentate anche altre modifiche che non sono considerate di rilievo. Qualsiasi codice che fa riferimento alle API aggiornate può trarre vantaggio dalla rimozione di operatori o pragmas non più necessari.
Versione introdotta
6.0
Tipo di cambiamento che interrompe la compatibilità
Questa modifica può influire sulla compatibilità del codice sorgente .
Motivo della modifica
A partire da .NET Core 3.0, le annotazioni di annullabilità sono state applicate alle librerie .NET. Sin dall'inizio dello sforzo, gli errori in queste annotazioni sono stati previsti. Tramite feedback e ulteriori test, le annotazioni nullable per le API interessate sono risultate imprecise. Le annotazioni aggiornate rappresentano correttamente i contratti di nullità per le API.
Azione consigliata
Aggiornare il codice che chiama queste API per riflettere i contratti di nullità modificati.
Le API interessate
La tabella seguente elenca le API interessate:
API (Interfaccia di Programmazione delle Applicazioni) | Cosa è cambiato | Causa o non causa un'interruzione |
---|---|---|
System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) |
instance il tipo di parametro è annullabile |
Ininterrotto |
System.ComponentModel.ISite.Container | Il tipo di proprietà può essere nullo | Ultime notizie |
System.Xml.Linq.XContainer.Add(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.Linq.XContainer.AddFirst(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.Linq.XContainer.ReplaceNodes(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
XDocument(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
XDocument(XDeclaration, Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
XElement(XName, Object[]) | Il secondo tipo di parametro può essere nullo | Ininterrotto |
System.Xml.Linq.XElement.ReplaceAll(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.Linq.XElement.ReplaceAttributes(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.Linq.XNode.AddAfterSelf(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.Linq.XNode.AddBeforeSelf(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.Linq.XNode.ReplaceWith(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
XStreamingElement(XName, Object) | Il secondo tipo di parametro può essere nullo | Ininterrotto |
XStreamingElement(XName, Object[]) | Il secondo tipo di parametro può essere nullo | Ininterrotto |
System.Xml.Linq.XStreamingElement.Add(Object[]) | Il tipo di parametro è annullabile | Ininterrotto |
System.Xml.XmlDocument.XmlResolver | Il setter accetta un riferimento annullabile | Ultime notizie |
System.Net.Http.HttpClient.PatchAsync |
content il tipo di parametro è annullabile |
Ininterrotto |
System.Net.Http.HttpClient.PostAsync |
content il tipo di parametro è annullabile |
Ininterrotto |
System.Net.Http.HttpClient.PutAsync |
content il tipo di parametro è annullabile |
Ininterrotto |
System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) | Il primo tipo di parametro ammette valori nulli | Ininterrotto |
System.Linq.Expressions.Expression<TDelegate>.Update(Expression, IEnumerable<ParameterExpression>) | Il tipo restituito non può essere nullo | Ininterrotto |
System.Data.IDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) |
buffer il tipo di parametro è annullabile |
Ultime notizie |
System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) |
buffer il tipo di parametro è annullabile |
Ultime notizie |
System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) |
buffer il tipo di parametro è annullabile |
Ultime notizie |
System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) |
buffer il tipo di parametro è annullabile |
Ultime notizie |
System.Net.HttpListenerContext.AcceptWebSocketAsync |
subProtocol il tipo di parametro è annullabile |
Ininterrotto |
Metodi che eseguono l'override System.Object.Equals(Object) e molti altri che restituiscono bool |
[NotNullWhen(true)] aggiunto al primo parametro nullable |
Ultime notizie |
System.Collections.Immutable.ImmutableArray<T>.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Collections.Specialized.BitVector32.Equals(Object) |
NotNullWhen(true) è stato aggiunto al o parametro |
Ultime notizie |
System.Collections.Specialized.BitVector32.Section.Equals(Object) |
NotNullWhen(true) è stato aggiunto al o parametro |
Ultime notizie |
System.Reflection.Metadata.BlobContentId.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.BlobHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.EntityHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.GuidHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.Handle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.ImportScopeHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.LocalConstantHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.SequencePoint.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.SignatureHeader.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Emit.Label.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.Reflection.Emit.OpCode.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |
System.DateOnly.Equals(Object) |
NotNullWhen(true) è stato aggiunto al value parametro |
Ultime notizie |
System.TimeOnly.Equals(Object) |
NotNullWhen(true) è stato aggiunto al value parametro |
Ultime notizie |
System.Reflection.Pointer.Equals(Object) |
NotNullWhen(true) è stato aggiunto al obj parametro |
Ultime notizie |