Struct vs class
- Oyun Geliştirme kursu
- Uzman
- Ders 9/47
- 4 dk
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 tipidirVeri 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
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
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
public ____ Nokta
{
public int x;
}
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 |