Aracılığıyla paylaş


Null atanabilir referans türü açıklamalarındaki değişiklikler

.NET 6'da, .NET kitaplıklarındaki bazı null atanabilir ek açıklamalar değişti.

Açıklamayı değiştir

Önceki .NET sürümlerinde, bazı null atanabilir başvuru türü ek açıklamaları yanlıştır ve derleme uyarıları eksik veya yanlıştır. .NET 6'dan başlayarak, daha önce uygulanmış olan bazı ek açıklamalar güncelleştirildi. Yeni derleme uyarıları üretilecek ve bundan sonra etkilenen API'ler için yanlış derleme uyarıları üretilmeyecek.

Bu değişikliklerin bazıları yeni derleme zamanı uyarılarına yol açabileceğinden bozulmalara neden olan olarak değerlendirilir. .NET 6'ya geçiş yaptığınızda, bu API'lere başvuran kodun güncelleştirilmiş olması gerekir.

Bozulmaya neden olmayan diğer değişiklikler de bu sayfada belgelenmiştir. Güncelleştirilmiş API'lere başvuran tüm kodlar artık gerekli olmayan işleçleri veya pragmaları kaldırmaktan yararlanabilir.

Sürüm kullanıma sunulmuştur

6,0

Kesinti yaratan değişiklik türü

Bu değişiklik kaynak uyumluluğunuetkileyebilir.

Değişiklik nedeni

.NET Core 3.0'dan başlayarak, .NET kitaplıklarına null edilebilirlik ek açıklamaları eklendi. Çabanın başlangıcından itibaren, bu ek açıklamalarda hatalar beklenmişti. Geri bildirim ve daha fazla test ile etkilenen API'ler için null edilebilir açıklamaların yanlış olduğu belirlendi. Güncellenmiş ek açıklamalar, API'ler için null değer atanabilirlik sözleşmelerini doğru bir şekilde yansıtır.

Düzeltilmiş nullability sözleşmelerini yansıtmak için bu API'leri çağıran kodu güncelleştirin.

Etkilenen API'ler

Aşağıdaki tabloda etkilenen API'ler listelenmektedir:

Uygulama Programlama Arayüzü (API) Ne değişti? Bölünen veya bölünmeyen
System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider.GetTypeDescriptor(Type, Object) instance parametre türü null atanabilir Kesilmez
System.ComponentModel.ISite.Container Özellik türü null atanabilir Son Dakika
System.Xml.Linq.XContainer.Add(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.Linq.XContainer.AddFirst(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.Linq.XContainer.ReplaceNodes(Object[]) Parametre türü null atanabilir Kesilmez
XDocument(Object[]) Parametre türü null atanabilir Kesilmez
XDocument(XDeclaration, Object[]) Parametre türü null atanabilir Kesilmez
XElement(XName, Object[]) İkinci parametre türü boş değer alabilir Kesilmez
System.Xml.Linq.XElement.ReplaceAll(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.Linq.XElement.ReplaceAttributes(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.Linq.XNode.AddAfterSelf(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.Linq.XNode.AddBeforeSelf(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.Linq.XNode.ReplaceWith(Object[]) Parametre türü null atanabilir Kesilmez
XStreamingElement(XName, Object) İkinci parametre türü boş değer alabilir Kesilmez
XStreamingElement(XName, Object[]) İkinci parametre türü boş değer alabilir Kesilmez
System.Xml.Linq.XStreamingElement.Add(Object[]) Parametre türü null atanabilir Kesilmez
System.Xml.XmlDocument.XmlResolver Ayarlayıcı null olabilen bir başvuruyu kabul eder Son Dakika
System.Net.Http.HttpClient.PatchAsync content parametre türü null atanabilir Kesilmez
System.Net.Http.HttpClient.PostAsync content parametre türü null atanabilir Kesilmez
System.Net.Http.HttpClient.PutAsync content parametre türü null atanabilir Kesilmez
System.Linq.Expressions.MethodCallExpression.Update(Expression, IEnumerable<Expression>) İlk parametre türü null değeri alabilir Kesilmez
System.Linq.Expressions.Expression<TDelegate>.Update(Expression, IEnumerable<ParameterExpression>) Dönüş türü null değer atanamaz Kesilmez
System.Data.IDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) buffer parametre türü null atanabilir Son Dakika
System.Data.IDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) buffer parametre türü null atanabilir Son Dakika
System.Data.Common.DbDataRecord.GetBytes(Int32, Int64, Byte[], Int32, Int32) buffer parametre türü null atanabilir Son Dakika
System.Data.Common.DbDataRecord.GetChars(Int32, Int64, Char[], Int32, Int32) buffer parametre türü null atanabilir Son Dakika
System.Net.HttpListenerContext.AcceptWebSocketAsync subProtocol parametre türü null atanabilir Kesilmez
System.Object.Equals(Object)'yi override eden yöntemler ve birçok diğer bool değer döndüren yöntemler [NotNullWhen(true)] ilk null atanabilir parametreye eklendi Son Dakika
System.Collections.Immutable.ImmutableArray<T>.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Collections.Specialized.BitVector32.Equals(Object) NotNullWhen(true) parametresine o eklendi Son Dakika
System.Collections.Specialized.BitVector32.Section.Equals(Object) NotNullWhen(true) parametresine o eklendi Son Dakika
System.Reflection.Metadata.BlobContentId.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.BlobHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.CustomDebugInformationHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.DocumentNameBlobHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.EntityHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.GuidHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.Handle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.ImportScopeHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.LocalConstantHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.NamespaceDefinitionHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.SequencePoint.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.SignatureHeader.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.Ecma335.EditAndContinueLogEntry.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Metadata.Ecma335.LabelHandle.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Emit.Label.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.Reflection.Emit.OpCode.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika
System.DateOnly.Equals(Object) NotNullWhen(true) parametresine value eklendi Son Dakika
System.TimeOnly.Equals(Object) NotNullWhen(true) parametresine value eklendi Son Dakika
System.Reflection.Pointer.Equals(Object) NotNullWhen(true) parametresine obj eklendi Son Dakika

Ayrıca bakınız