Span<T>
Span<T> ile güvenli bellek görünümünü öğrenirsin.
Span<T> nedir?
Span<T>, bir bellek bölgesine güvenli bir görünüm sağlayan ref struct'tır. Diziyi, yığını ya da yerel belleği sarar; sınırları denetler ve unsafe gerektirmeden düşük maliyetli erişim sunar.
Span<int> s = stackalloc int[4]; yığın belleğini güvenli biçimde sarar. Span, async metotlarda kullanılamaz çünkü yığında yaşamalıdır; bu sınır, yanlış kullanımı önler.
Span ile dizi
Var olan bir diziyi Span'e sarmak için Span<int> s = arr.AsSpan(); veya Span<int> s = new Span<int>(arr); kullanılır.
Span üzerinde indexer (s[0]) ve Slice metodu çalışır; Slice bellek kopyalamadan alt görünüm verir. Bu, büyük diziler üzerinde parça işlemede performans kazandırır ve kodu sadeleştirir.
Uygulama Span ile değer topla
Span<int> s = stackalloc int[3]; tanımla. s[0] = 4; s[1] = 5; s[2] = 6; ata. int sum = s[0] + s[1] + s[2]; hesapla ve Console.WriteLine(sum); ile yazdır.
Örnek çözümü göster
Span<int> s = stackalloc int[3]; s[0] = 4; s[1] = 5; s[2] = 6; int sum = s[0] + s[1] + s[2]; Console.WriteLine(sum);
Örnek çözüm:
using System;
class Program
{
static void Main()
{
Span<int> s = stackalloc int[3];
s[0] = 4;
s[1] = 5;
s[2] = 6;
int sum = s[0] + s[1] + s[2];
Console.WriteLine(sum);
}
}
Kendini test et
-
Span<T>'nin avantajı nedir?
- Async metotlarda kullanılabilir
- Otomatik GC toplama
- Sınır denetimi ve düşük maliyetli erişim
- Yönetilen string'leri değiştirir
Cevabı göster
Sınır denetimi ve düşük maliyetli erişim — Doğru. Span sınırları denetler ve düşük maliyetlidir.
-
Span üyelerini eşleştir
- Span<T>
- Bellek görünümü
- AsSpan()
- Diziyi sarma
- Slice(i, n)
- Alt görünüm
- ref struct
- Yığında yaşamalı
-
Span ile stackalloc
Span<int> s = ____ int[3];Cevabı göster
Span<int> s = stackalloc int[3];