Modifiche alle annotazioni del tipo riferimento nullable
In .NET 6 alcune annotazioni di supporto dei valori Null nelle librerie .NET sono state modificate.
Descrizione delle modifiche
Nelle versioni precedenti di .NET, alcune annotazioni del tipo riferimento nullable non sono corrette e gli avvisi di compilazione sono errati o assenti. 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 errati per le API interessate.
Alcune di queste modifiche vengono considerate in grado di causare un'interruzione, perché possono generare 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 non considerate in grado di causare un'interruzione. Il codice che fa riferimento alle API aggiornate può trarre vantaggio dalla rimozione di operatori o pragma non più necessari.
Versione introdotta
6.0
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità dell'origine.
Motivo della modifica
A partire da .NET Core 3.0, alle librerie .NET sono state applicate annotazioni di supporto dei valori Null. Sin dal principio, erano previsti errori in queste annotazioni. Grazie al feedback e a ulteriori test, si è determinato che le annotazioni di supporto dei valori Null per le API interessate sono imprecise. Le annotazioni aggiornate rappresentano correttamente i contratti di supporto dei valori Null per le API.
Azione consigliata
Aggiornare il codice che chiama queste API in modo da riflettere i contratti di supporto dei valori Null modificati.
API interessate
La tabella seguente contiene l'elenco delle API interessate:
API | Cosa è cambiato | Causa o non causa un'interruzione |
---|---|---|
System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) | Il tipo di parametro instance è nullable |
Non causa un'interruzione |
System.ComponentModel.ISite.Container | Il tipo di proprietà è nullable | Interruzione |
System.Xml.Linq.XContainer.Add(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XContainer.AddFirst(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XContainer.ReplaceNodes(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
XDocument(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
XDocument(XDeclaration, Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
XElement(XName, Object[]) | Il secondo tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XElement.ReplaceAll(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XElement.ReplaceAttributes(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XNode.AddAfterSelf(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XNode.AddBeforeSelf(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XNode.ReplaceWith(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
XStreamingElement(XName, Object) | Il secondo tipo di parametro è nullable | Non causa un'interruzione |
XStreamingElement(XName, Object[]) | Il secondo tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.Linq.XStreamingElement.Add(Object[]) | Il tipo di parametro è nullable | Non causa un'interruzione |
System.Xml.XmlDocument.XmlResolver | Il setter accetta un riferimento nullable | Interruzione |
System.Net.Http.HttpClient.PatchAsync | Il tipo di parametro content è nullable |
Non causa un'interruzione |
System.Net.Http.HttpClient.PostAsync | Il tipo di parametro content è nullable |
Non causa un'interruzione |
System.Net.Http.HttpClient.PutAsync | Il tipo di parametro content è nullable |
Non causa un'interruzione |
System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) | Il primo tipo di parametro è nullable | Non causa un'interruzione |
System.Linq.Expressions.Expression<TDelegate>.Update(Expression, IEnumerable<ParameterExpression>) | Il tipo restituito non è nullable | Non causa un'interruzione |
System.Data.IDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) | Il tipo di parametro buffer è nullable |
Interruzione |
System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) | Il tipo di parametro buffer è nullable |
Interruzione |
System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) | Il tipo di parametro buffer è nullable |
Interruzione |
System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) | Il tipo di parametro buffer è nullable |
Interruzione |
System.Net.HttpListenerContext.AcceptWebSocketAsync | Il tipo di parametro subProtocol è nullable |
Non causa un'interruzione |
Metodi che eseguono l'override di System.Object.Equals(Object) e molti altri che restituiscono bool |
[NotNullWhen(true)] è stato aggiunto al primo parametro nullable |
Interruzione |
System.Collections.Immutable.ImmutableArray<T>.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Collections.Specialized.BitVector32.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro o |
Interruzione |
System.Collections.Specialized.BitVector32.Section.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro o |
Interruzione |
System.Reflection.Metadata.BlobContentId.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.BlobHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.EntityHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.GuidHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.Handle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.ImportScopeHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.LocalConstantHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.SequencePoint.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.SignatureHeader.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Emit.Label.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.Reflection.Emit.OpCode.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
System.DateOnly.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro value |
Interruzione |
System.TimeOnly.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro value |
Interruzione |
System.Reflection.Pointer.Equals(Object) | NotNullWhen(true) è stato aggiunto al parametro obj |
Interruzione |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per