Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.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.
Önerilen eylem
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 |