Sdílet prostřednictvím


Změny poznámek typu odkazu s možnou hodnotou null

V .NET 6 se změnily některé poznámky nullability v knihovnách .NET.

Změna popisu

V předchozích verzích .NET jsou některé poznámky typu odkazu s možnou hodnotou null nesprávné a upozornění sestavení buď chybí, nebo jsou nesprávná. Počínaje verzí .NET 6 byly aktualizovány některé poznámky, které byly dříve použity. Vytvoří se nová upozornění sestavení a pro ovlivněná rozhraní API už nebudou vytvořena nesprávná upozornění sestavení.

Některé z těchto změn se považují za zásadní , protože můžou vést k novým upozorněním na dobu sestavení. Při migraci na .NET 6 bude potřeba aktualizovat kód, který odkazuje na tato rozhraní API.

Na této stránce jsou také zdokumentované další změny, které se nepovažují za zásadní. Jakýkoli kód, který odkazuje na aktualizovaná rozhraní API, může těžit z odebrání operátorů nebo direktiv, které už nejsou nezbytné.

Zavedená verze

6.0

Typ zásadní změny

Tato změna může mít vliv na kompatibilitu zdroje.

Důvod změny

Od verze .NET Core 3.0 se u knihoven .NET použily poznámky nullability. Od počátku úsilí byly očekávány chyby v těchto poznámkách. Prostřednictvím zpětné vazby a dalšího testování se zjistily nepřesné poznámky s možnou hodnotou null pro ovlivněná rozhraní API. Aktualizované poznámky správně představují kontrakty s nulovostí pro rozhraní API.

Aktualizujte kód, který volá tato rozhraní API, aby odrážel revidované kontrakty s nulovostí.

Ovlivněná rozhraní API

Následující tabulka uvádí ovlivněná rozhraní API:

rozhraní API Co se změnilo Přerušení nebo přerušení
System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) instance Typ parametru je nullable Pevných
System.ComponentModel.ISite.Container Typ vlastnosti je nullable Narušující
System.Xml.Linq.XContainer.Add(Object[]) Typ parametru je nullable Pevných
System.Xml.Linq.XContainer.AddFirst(Object[]) Typ parametru je nullable Pevných
System.Xml.Linq.XContainer.ReplaceNodes(Object[]) Typ parametru je nullable Pevných
XDocument(Object[]) Typ parametru je nullable Pevných
XDocument(XDeclaration, Object[]) Typ parametru je nullable Pevných
XElement(XName, Object[]) Druhý typ parametru je nullable Pevných
System.Xml.Linq.XElement.ReplaceAll(Object[]) Typ parametru je nullable Pevných
System.Xml.Linq.XElement.ReplaceAttributes(Object[]) Typ parametru je nullable Pevných
System.Xml.Linq.XNode.AddAfterSelf(Object[]) Typ parametru je nullable Pevných
System.Xml.Linq.XNode.AddBeforeSelf(Object[]) Typ parametru je nullable Pevných
System.Xml.Linq.XNode.ReplaceWith(Object[]) Typ parametru je nullable Pevných
XStreamingElement(XName, Object) Druhý typ parametru je nullable Pevných
XStreamingElement(XName, Object[]) Druhý typ parametru je nullable Pevných
System.Xml.Linq.XStreamingElement.Add(Object[]) Typ parametru je nullable Pevných
System.Xml.XmlDocument.XmlResolver Setter přijímá odkaz s možnou hodnotou null. Narušující
System.Net.Http.HttpClient.PatchAsync content Typ parametru je nullable Pevných
System.Net.Http.HttpClient.PostAsync content Typ parametru je nullable Pevných
System.Net.Http.HttpClient.PutAsync content Typ parametru je nullable Pevných
System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) První typ parametru je nullable Pevných
System.Linq.Expressions.Expression<TDelegate>.Update(Expression, IEnumerable<ParameterExpression>) Návratový typ není nullable Pevných
System.Data.IDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) buffer Typ parametru je nullable Narušující
System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) buffer Typ parametru je nullable Narušující
System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) buffer Typ parametru je nullable Narušující
System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) buffer Typ parametru je nullable Narušující
System.Net.HttpListenerContext.AcceptWebSocketAsync subProtocol Typ parametru je nullable Pevných
Metody, které přepisují System.Object.Equals(Object) a mnoho dalších, které vracejí bool [NotNullWhen(true)] přidání do prvního parametru s možnou hodnotou null Narušující
System.Collections.Immutable.ImmutableArray<T>.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Collections.Specialized.BitVector32.Equals(Object) NotNullWhen(true) byl přidán do parametru o . Narušující
System.Collections.Specialized.BitVector32.Section.Equals(Object) NotNullWhen(true) byl přidán do parametru o . Narušující
System.Reflection.Metadata.BlobContentId.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.BlobHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.EntityHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.GuidHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.Handle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.ImportScopeHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.LocalConstantHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.SequencePoint.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.SignatureHeader.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Emit.Label.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.Reflection.Emit.OpCode.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující
System.DateOnly.Equals(Object) NotNullWhen(true) byl přidán do parametru value . Narušující
System.TimeOnly.Equals(Object) NotNullWhen(true) byl přidán do parametru value . Narušující
System.Reflection.Pointer.Equals(Object) NotNullWhen(true) byl přidán do parametru obj . Narušující

Viz také