CodeBlanks Logo Icon CodeBlanks

Struct vs class

Struct ve class arasındaki bellek farkını öğrenirsin.

Struct ve class farkı

struct bir değer tipidir; değeri doğrudan saklanır ve genelde stack üzerinde yer alır. class ise bir referans tipidir; nesnesi heap'te saklanır ve değişkende yalnızca referansı durur. Bu fark bellek kullanımını doğrudan etkiler.

public struct Nokta
{
    public int x;
    public int y;
}

Yukarıdaki Nokta bir değer tipidir.

Hangi tipi seçmeli?

Küçük ve sık kopyalanan veriler için struct uygundur; böylece heap tahsisi yapılmaz. Büyük ya da miras gerektiren nesneler için class kullanılır. Doğru tip seçimi gereksiz tahsisleri önler.

public class Nesne
{
    public int x;
}
// Nokta deger tipi, Nesne referans tipidir

Veri ne kadar küçükse struct o kadar mantıklıdır.

Uygulama Struct ile çalış

StructOrnek sınıfının Start metodu içinde Nokta tipinde bir değişken oluştur ve x alanına 2 değerini ata. Debug.Log ile "Nokta x: " metnini x alanı ile birleştirerek yazdır. Ayrıca Nokta yapısını x alanıyla birlikte değer tipi olarak tanımla.

Başlangıç kodu

Player.cs
using UnityEngine;

public class StructOrnek : MonoBehaviour
{
    void Start()
    {
        // Nokta tipinde bir degisken olustur, x alanina 2 degerini ata
        // "Nokta x: " metnini x alani ile birlestirip yazdir
    }
}

// Nokta adli yapiyi deger tipi olarak tanimla

Örnek çözüm

Player.cs
using UnityEngine;

public class StructOrnek : MonoBehaviour
{
    void Start()
    {
        Nokta n = new Nokta();
        n.x = 2;
        Debug.Log("Nokta x: " + n.x);
    }
}

public struct Nokta
{
    public int x;
}

Beklenen çıktı

Nokta x: 2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 struct ile class arasındaki temel bellek farkı nedir?

  • struct bellek kullanmaz
  • struct heap'te, class stack'te saklanır
  • struct değer tipi olarak saklanır, class nesnesi heap'te durur Doğru cevap
  • İkisi de her zaman heap'te saklanır

Açıklama: struct değeri doğrudan taşır; class değişkeni heap'teki nesneye referans gösterir.

2 Değer tipini struct ile tanımla

Soru
    public ____ Nokta
    {
        public int x;
    }
Cevap
    public struct Nokta
    {
        public int x;
    }

Açıklama: Değer tipleri struct anahtarıyla tanımlanır; class ise referans tipi verir.

3 Bellek tipi terimleri

Kavram Anlamı
struct Değer tipi
class Referans tipi
Değer tipi Değer doğrudan saklanır
Referans tipi Heap'teki nesneyi gösterir

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