CodeBlanks Logo Icon CodeBlanks

Span<T>

C# kursu · Uzman · Ders 11/47

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

  1. 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.

  2. 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ı
  3. Span ile stackalloc

    Span<int> s = ____ int[3];
    Cevabı göster
    Span<int> s = stackalloc int[3];

Uzman bölümündeki tüm dersler