Änderungen an Anmerkungen für Nullable-Verweistypen
In .NET 6 wurde einige Anmerkungen für die NULL-Zulässigkeit in .NET-Bibliotheken geändert.
Änderungsbeschreibung
In vorherigen .NET-Versionen waren einige Anmerkungen für Nullable-Verweistypen nicht korrekt, und es wurden keine oder falsche Buildwarnungen ausgelöst. Ab .NET 6 wurden einige der zuvor angewendeten Anmerkungen geändert. Es werden neue Buildwarnungen generiert, und die falschen Buildwarnungen werden für die betroffenen APIs nicht mehr generiert.
Einige dieser Änderungen gelten als Breaking Changes, da sie zu neuen Warnungen zur Buildzeit führen können. Wenn Sie zu .NET 6 migrieren, müssen Sie Code anpassen, der auf diese APIs verweist.
Auch andere Änderungen, die jedoch nicht als Breaking Changes gelten, sind auf dieser Seite dokumentiert. Sie sollten nicht mehr benötigte Operatoren und Pragmas aus Code entfernen, der auf die aktualisierten APIs verweist.
Eingeführt in Version
6.0
Typ des Breaking Changes
Diese Änderung kann sich auf die Quellkompatibilität auswirken.
Grund für die Änderung
Ab .NET Core 3.0 wurden Anmerkungen für die NULL-Zulässigkeit auf .NET-Bibliotheken angewendet. Schon zu Beginn wurden Fehler in diesen Anmerkungen erwartet. Durch Feedback und weitere Tests konnten die nicht korrekten Anmerkungen für die NULL-Zulässigkeit für die betroffenen APIs ermittelt werden. Die aktualisierten Anmerkungen stellen jetzt die korrekte NULL-Zulässigkeit für diese APIs dar.
Empfohlene Maßnahme
Aktualisieren Sie Code, der diese APIs aufruft, damit dieser die überarbeitete NULL-Zulässigkeit berücksichtigt.
Betroffene APIs
Die betroffenen APIs werden in der folgenden Tabelle aufgeführt:
API | Änderung | Betroffen/Nicht betroffen |
---|---|---|
System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) | Parametertyp instance lässt NULL-Werte zu |
Nicht betroffen |
System.ComponentModel.ISite.Container | Eigenschaftentyp lässt NULL-Werte zu | Breaking |
System.Xml.Linq.XContainer.Add(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XContainer.AddFirst(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XContainer.ReplaceNodes(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
XDocument(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
XDocument(XDeclaration, Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
XElement(XName, Object[]) | Zweiter Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XElement.ReplaceAll(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XElement.ReplaceAttributes(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XNode.AddAfterSelf(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XNode.AddBeforeSelf(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XNode.ReplaceWith(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
XStreamingElement(XName, Object) | Zweiter Parametertyp lässt NULL-Werte zu | Nicht betroffen |
XStreamingElement(XName, Object[]) | Zweiter Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.Linq.XStreamingElement.Add(Object[]) | Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Xml.XmlDocument.XmlResolver | Der Setter akzeptiert einen Nullverweis. | Breaking |
System.Net.Http.HttpClient.PatchAsync | Parametertyp content lässt NULL-Werte zu |
Nicht betroffen |
System.Net.Http.HttpClient.PostAsync | Parametertyp content lässt NULL-Werte zu |
Nicht betroffen |
System.Net.Http.HttpClient.PutAsync | Parametertyp content lässt NULL-Werte zu |
Nicht betroffen |
System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) | Erster Parametertyp lässt NULL-Werte zu | Nicht betroffen |
System.Linq.Expressions.Expression<TDelegate>.Update(Expression, IEnumerable<ParameterExpression>) | Rückgabetyp lässt keine NULL-Werte zu | Nicht betroffen |
System.Data.IDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) | Parametertyp buffer lässt NULL-Werte zu |
Breaking |
System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) | Parametertyp buffer lässt NULL-Werte zu |
Breaking |
System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) | Parametertyp buffer lässt NULL-Werte zu |
Breaking |
System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) | Parametertyp buffer lässt NULL-Werte zu |
Breaking |
System.Net.HttpListenerContext.AcceptWebSocketAsync | Parametertyp subProtocol lässt NULL-Werte zu |
Nicht betroffen |
Methoden, die System.Object.Equals(Object) außer Kraft setzen und viele andere, die bool zurückgeben |
[NotNullWhen(true)] wurde zum ersten Parameter hinzugefügt, der Nullwerte zulässt |
Breaking |
System.Collections.Immutable.ImmutableArray<T>.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Collections.Specialized.BitVector32.Equals(Object) | NotNullWhen(true) wurde dem Parameter o hinzugefügt |
Breaking |
System.Collections.Specialized.BitVector32.Section.Equals(Object) | NotNullWhen(true) wurde dem Parameter o hinzugefügt |
Breaking |
System.Reflection.Metadata.BlobContentId.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.BlobHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.EntityHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.GuidHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.Handle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.ImportScopeHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.LocalConstantHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.SequencePoint.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.SignatureHeader.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Emit.Label.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.Reflection.Emit.OpCode.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
System.DateOnly.Equals(Object) | NotNullWhen(true) wurde dem Parameter value hinzugefügt |
Breaking |
System.TimeOnly.Equals(Object) | NotNullWhen(true) wurde dem Parameter value hinzugefügt |
Breaking |
System.Reflection.Pointer.Equals(Object) | NotNullWhen(true) wurde dem Parameter obj hinzugefügt |
Breaking |
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für