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, rastgele belleğin bitişik, kesin olarak belirlenmiş bir bölgesini temsil eden bir dizi birbiriyle ilişkili tür içerir. Bu türler , bellek kopyalamayı veya yönetilen yığına gerekenden fazla ayırmayı önleyen algoritmaların oluşturulmasına izin vermek için tasarlanmıştır. Bunları (Slice, AsSpan(), bir koleksiyon ifadesi veya oluşturucu aracılığıyla) oluşturmak, temel alınan arabellekleri yinelemeyi içermez: yalnızca sarmalanan belleğin "görünümünü" temsil eden ilgili referanslar ve uzaklıklar güncellenir. Yüksek performanslı kodda span'lar genellikle dizeleri gereksiz yere ayırmamak için kullanılır.
Türler şunlardır:
System.Span<T>, bitişik bir bellek bölgesine erişmek için kullanılan bir tür. Bir Span<T> örnek,
Ttüründe bir dizi, stackalloc ile ayrılmış bir arabellek veya yönetilmeyen bellek işaretçisi tarafından yedeklenebilir. Yığında depolanması gerektiğinden, bir dizi kısıtlamaya tabidir. Örneğin, bir sınıftaki bir alan Span<T> türünde olamaz, span zaman uyumsuz işlemlerde kullanılamaz.System.ReadOnlySpan<T>, yapının sabit bir sürümü Span<T> . Örnekler bir Stringtarafından da yedeklenebilir.
System.Memory<T>, bir bitişik bellek bölgesi üzerinde sarmalayıcı. Bir Memory<T> örnek, bir tür
Tdizisi veya bellek yöneticisi tarafından yedeklenebilir. Memory<T> yönetilen yığında depolanabildiği için, Span<T> sınırlamalarının hiçbiri yoktur.System.ReadOnlyMemory<T>, yapının sabit bir sürümü Memory<T> . Örnekler bir Stringtarafından da yedeklenebilir.
System.Buffers.MemoryPool<T>, bir bellek havuzundan bir sahibe kesin tipte bellek blokları ayırır. IMemoryOwner<T> örnekleri MemoryPool<T>.Rent çağrılarak havuzdan kiralanabilir ve MemoryPool<T>.Dispose() çağrılarak havuza geri bırakılabilir.
System.Buffers.IMemoryOwner<T>, bir bellek bloğunun sahibini temsil eder ve yaşam süresi yönetimini denetler.
MemoryManager<T>, Memory<T>'in uygulamasını değiştirmek için kullanılabilecek, örneğin güvenli tanıtıcılar gibi ek türlerle Memory<T>'yi desteklemek amacıyla kullanılan bir soyut temel sınıftır. MemoryManager<T> gelişmiş senaryolar için tasarlanmıştır.
ArraySegment<T>, belirli bir dizinden başlayarak belli sayıda dizi öğesini kapsayan bir sarmalayıcı.
System.MemoryExtensions, dizeleri, dizileri ve dizi kesimlerini bloklara dönüştürmek için Memory<T> bir uzantı yöntemleri koleksiyonu.
Daha fazla bilgi için System.Buffers ad alanına bakın.
Bellek ve kapasite ile çalışma
Bellekle ilgili ve span ile ilgili türler genellikle verileri bir işlem hattında depolamak için kullanıldığından, bu nedenle Span<T>, Memory<T> ve ilgili türleri kullanırken en iyi uygulamaları izlemeniz önemlidir. Bu en iyi yöntemler Bellek<T> ve Span<T> kullanım yönergelerinde belgelenmiştir.