Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In .NET 6 wurden einige Nullbarkeitsanmerkungen in den .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 Anmerkungen aktualisiert, die zuvor angewendet wurden. Neue Buildwarnungen werden erstellt, und falsche Buildwarnungen werden für die betroffenen APIs nicht mehr erstellt.
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 Code, der auf diese APIs verweist, aktualisiert werden.
Andere Änderungen, die nicht als Bruch angesehen werden, werden auch auf dieser Seite dokumentiert. Jeder Code, der auf die aktualisierten APIs verweist, kann davon profitieren, Operatoren oder Pragmen zu entfernen, die nicht mehr erforderlich sind.
Eingeführte Version
6,0
Art der einschneidenden Änderung
Diese Änderung kann sich auf die Quellkompatibilität auswirken.
Grund für Änderung
Ab .NET Core 3.0 wurden Nullbarkeitsanmerkungen auf die .NET-Bibliotheken angewendet. Von Anfang an 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 die Nullbarkeitsverträge für die APIs richtig dar.
Empfohlene Aktion
Aktualisieren Sie Code, der diese APIs aufruft, um die überarbeiteten Nullbarkeitsverträge widerzuspiegeln.
Betroffene APIs
In der folgenden Tabelle sind die betroffenen APIs aufgeführt:
| Programmierschnittstelle (API) | Was sich geändert hat | Betroffen/Nicht betroffen |
|---|---|---|
| System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) |
instance Parametertyp ist nullwertebar |
Nicht betroffen |
| System.ComponentModel.ISite.Container | Eigenschaftentyp lässt NULL-Werte zu | Bruch |
| 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[]) | Der zweite Parametertyp ist nullable. | 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) | Der zweite Parametertyp ist nullable. | Nicht betroffen |
| XStreamingElement(XName, Object[]) | Der zweite Parametertyp ist nullable. | 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. | Bruch |
| System.Net.Http.HttpClient.PatchAsync |
content Parametertyp ist nullwertebar |
Nicht betroffen |
| System.Net.Http.HttpClient.PostAsync |
content Parametertyp ist nullwertebar |
Nicht betroffen |
| System.Net.Http.HttpClient.PutAsync |
content Parametertyp ist nullwertebar |
Nicht betroffen |
| System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) | Der Typ des ersten Parameters ist nullfähig | 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) |
buffer Parametertyp ist nullwertebar |
Bruch |
| System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) |
buffer Parametertyp ist nullwertebar |
Bruch |
| System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) |
buffer Parametertyp ist nullwertebar |
Bruch |
| System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) |
buffer Parametertyp ist nullwertebar |
Bruch |
| System.Net.HttpListenerContext.AcceptWebSocketAsync |
subProtocol Parametertyp ist nullwertebar |
Nicht betroffen |
Methoden, die System.Object.Equals(Object) überschreiben, und viele andere, die bool zurückgeben |
[NotNullWhen(true)] zum ersten nullablen Parameter hinzugefügt |
Bruch |
| System.Collections.Immutable.ImmutableArray<T>.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Collections.Specialized.BitVector32.Equals(Object) |
NotNullWhen(true) wurde dem o Parameter hinzugefügt. |
Bruch |
| System.Collections.Specialized.BitVector32.Section.Equals(Object) |
NotNullWhen(true) wurde dem o Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.BlobContentId.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.BlobHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.EntityHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.GuidHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.Handle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.ImportScopeHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.LocalConstantHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.SequencePoint.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.SignatureHeader.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Emit.Label.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.Reflection.Emit.OpCode.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |
| System.DateOnly.Equals(Object) |
NotNullWhen(true) wurde dem value Parameter hinzugefügt. |
Bruch |
| System.TimeOnly.Equals(Object) |
NotNullWhen(true) wurde dem value Parameter hinzugefügt. |
Bruch |
| System.Reflection.Pointer.Equals(Object) |
NotNullWhen(true) wurde dem obj Parameter hinzugefügt. |
Bruch |