Modification des annotations de type référence Nullable
Dans .NET 6, certaines annotations de nullabilité dans les bibliothèques .NET ont changé.
Description de la modification
Dans les versions précédentes de .NET, certaines annotations de type référence Nullable étaient incorrectes. Les avertissements de build étaient absents ou incorrects. À compter de .NET 6, certaines annotations appliquées précédemment ont été mises à jour. De nouveaux avertissements de build sont émis. Les avertissements de build incorrects ne sont plus générés pour les API concernées.
Certains de ces changements sont considérés comme cassants, car ils peuvent donner lieu à de nouveaux avertissements au moment de la génération. Lorsque vous migrez vers .NET 6, vous devez mettre à jour le code qui fait référence à ces API.
D’autres changements non considérés comme cassants sont également documentés sur cette page. Tout code faisant référence aux API mises à jour peut tirer parti de la suppression d’opérateurs ou de pragmas qui ne sont plus nécessaires.
Version introduite
6.0
Type de changement cassant
Ce changement peut affecter la compatibilité source.
Raison du changement
À compter de .NET Core 3.0, les annotations de nullabilité ont été appliquées aux bibliothèques .NET. Dès le début de cet effort, des erreurs étaient attendues dans ces annotations. Grâce aux commentaires et à de nouveaux tests, les annotations Nullables des API concernées ont été jugées inexactes. Les annotations mises à jour représentent correctement les contrats de nullabilité pour les API.
Action recommandée
Mettez à jour le code qui appelle ces API de façon à refléter les contrats de nullabilité révisés.
API affectées
Le tableau suivant présente les API concernées :
API | Ce qui a changé | Cassant ou non |
---|---|---|
System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) | Le type de paramètre instance est Nullable. |
Non cassant |
System.ComponentModel.ISite.Container | Le type de propriété est Nullable. | Rupture |
System.Xml.Linq.XContainer.Add(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.Linq.XContainer.AddFirst(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.Linq.XContainer.ReplaceNodes(Object[]) | Le type de paramètre est Nullable. | Non cassant |
XDocument(Object[]) | Le type de paramètre est Nullable. | Non cassant |
XDocument(XDeclaration, Object[]) | Le type de paramètre est Nullable. | Non cassant |
XElement(XName, Object[]) | Le type du deuxième paramètre est Nullable. | Non cassant |
System.Xml.Linq.XElement.ReplaceAll(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.Linq.XElement.ReplaceAttributes(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.Linq.XNode.AddAfterSelf(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.Linq.XNode.AddBeforeSelf(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.Linq.XNode.ReplaceWith(Object[]) | Le type de paramètre est Nullable. | Non cassant |
XStreamingElement(XName, Object) | Le type du deuxième paramètre est Nullable. | Non cassant |
XStreamingElement(XName, Object[]) | Le type du deuxième paramètre est Nullable. | Non cassant |
System.Xml.Linq.XStreamingElement.Add(Object[]) | Le type de paramètre est Nullable. | Non cassant |
System.Xml.XmlDocument.XmlResolver | Le setter accepte une référence pouvant accepter une référence null | Rupture |
System.Net.Http.HttpClient.PatchAsync | Le type de paramètre content est Nullable. |
Non cassant |
System.Net.Http.HttpClient.PostAsync | Le type de paramètre content est Nullable. |
Non cassant |
System.Net.Http.HttpClient.PutAsync | Le type de paramètre content est Nullable. |
Non cassant |
System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) | Le type du premier paramètre est Nullable. | Non cassant |
System.Linq.Expressions.Expression<TDelegate>.Update(Expression, IEnumerable<ParameterExpression>) | Le type de retour n’est pas Nullable. | Non cassant |
System.Data.IDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) | Le type de paramètre buffer est Nullable. |
Rupture |
System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) | Le type de paramètre buffer est Nullable. |
Rupture |
System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) | Le type de paramètre buffer est Nullable. |
Rupture |
System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) | Le type de paramètre buffer est Nullable. |
Rupture |
System.Net.HttpListenerContext.AcceptWebSocketAsync | Le type de paramètre subProtocol est Nullable. |
Non cassant |
Méthodes qui remplacent System.Object.Equals(Object) et nombreuses méthodes qui retournent un bool |
[NotNullWhen(true)] est ajouté au premier paramètre Nullable. |
Rupture |
System.Collections.Immutable.ImmutableArray<T>.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Collections.Specialized.BitVector32.Equals(Object) | NotNullWhen(true) est ajouté au paramètre o . |
Rupture |
System.Collections.Specialized.BitVector32.Section.Equals(Object) | NotNullWhen(true) est ajouté au paramètre o . |
Rupture |
System.Reflection.Metadata.BlobContentId.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.BlobHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.EntityHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.GuidHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.Handle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.ImportScopeHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.LocalConstantHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.SequencePoint.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.SignatureHeader.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Emit.Label.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.Reflection.Emit.OpCode.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
System.DateOnly.Equals(Object) | NotNullWhen(true) est ajouté au paramètre value . |
Rupture |
System.TimeOnly.Equals(Object) | NotNullWhen(true) est ajouté au paramètre value . |
Rupture |
System.Reflection.Pointer.Equals(Object) | NotNullWhen(true) est ajouté au paramètre obj . |
Rupture |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : tout au long de 2024, nous allons éliminer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d'informations, consultez :Envoyer et afficher des commentaires pour