Yükleniyor...

Struct’lar

C#’ta Struct’lar, değer tipi olarak tanımlanan veri yapılarıdır ve küçük, bağımsız veri gruplarını tek bir mantıksal birim halinde temsil etmek için kullanılır. Struct’lar, sınıflardan farklı olarak heap yerine stack üzerinde saklanır ve bu nedenle bellek kullanımı daha verimlidir, özellikle küçük ve kısa ömürlü nesnelerde performans avantajı sağlar. Struct’lar genellikle koordinatlar, boyutlar, renkler veya konfigürasyon parametreleri gibi basit veri kümelerini modellemek için tercih edilir.
Struct’lar struct anahtar kelimesi ile tanımlanır ve alanlar, özellikler, metotlar ve yapıcı metodlar içerebilir. Ancak miras alamazlar ve sınıfların aksine başka bir struct’tan türeyemezler. Bu rehberde, Struct’ların temel sözdiziminden başlayarak ileri düzey kullanım örneklerine, algoritmalarla entegrasyon ve nesne yönelimli programlama ilkeleriyle ilişkisine kadar kapsamlı bilgiler sunulacaktır.
Okuyucu, Struct’ları güvenli ve verimli şekilde oluşturmayı, değer tipi olarak davranışlarını anlamayı, kopyalama ve performans hatalarından kaçınmayı ve Struct’ları gerçek dünya projelerinde nasıl kullanacağını öğrenecektir. Struct’ları anlamak, yazılım mimarisi ve sistem tasarımında bellek yönetimi ve performans optimizasyonu açısından kritik bir adımdır.

Temel Örnek

text
TEXT Code
using System;

struct Nokta
{
public int X;
public int Y;

public Nokta(int x, int y)
{
X = x;
Y = y;
}

public void Yazdir()
{
Console.WriteLine($"Koordinatlar: X = {X}, Y = {Y}");
}

}

class Program
{
static void Main()
{
Nokta n1 = new Nokta(10, 20);
n1.Yazdir();

Nokta n2;
n2.X = 5;
n2.Y = 15;
n2.Yazdir();

Console.ReadLine();
}

}

Bu örnekte, Nokta struct’ı X ve Y alanları ile tanımlanmıştır ve değerleri başlatmak için bir yapılandırıcı içerir. Yazdir metodu, Struct içinde veri ve davranışı bir arada göstermektedir. Main metodunda iki değişken oluşturulmuştur: n1 yapıcı ile başlatılmış, n2 ise alanları ayrı ayrı atanmıştır. Bu, Struct’ların esnekliğini ve değer tipi olarak bağımsız kopyalar oluşturduğunu gösterir.
Struct’lar, yüksek performans gerektiren ve küçük veri nesnelerini hızlı işlemek için uygundur. İyi uygulamalar, tüm alanları başlatmak, büyük ve karmaşık Struct’lardan kaçınmak ve değer tipi semantiğini anlamak üzerine kuruludur.

Pratik Örnek

text
TEXT Code
using System;

struct Dikdortgen
{
public int Genislik;
public int Yukseklik;

public Dikdortgen(int genislik, int yukseklik)
{
Genislik = genislik;
Yukseklik = yukseklik;
}

public int AlanHesapla()
{
return Genislik * Yukseklik;
}

public bool KareMi()
{
return Genislik == Yukseklik;
}

public void BilgiYazdir()
{
Console.WriteLine($"Dikdörtgen: Genişlik = {Genislik}, Yükseklik = {Yukseklik}, Alan = {AlanHesapla()}, Kare mi? {KareMi()}");
}

}

class Program
{
static void Main()
{
Dikdortgen d1 = new Dikdortgen(10, 20);
d1.BilgiYazdir();

Dikdortgen d2 = new Dikdortgen(15, 15);
d2.BilgiYazdir();

Console.ReadLine();
}

}

Dikdortgen struct’ı, algoritmalar ve iş mantığını Struct içinde barındırmayı gösterir. AlanHesapla ve KareMi metotları, veri üzerinde işlem yapar ve BilgiYazdir, veriyi ve işlevi birleştirir. Bu yapı, grafik, geometrik hesaplamalar veya geçici veri yapıları için kullanılabilir. Yapıcı ile tüm alanların başlatılması, metotların kompakt ve bağımsız olması iyi bir uygulamadır.

Struct’lar için en iyi uygulamalar: tüm alanları başlatmak, büyük veya karmaşık Struct’lardan kaçınmak ve referans tipi kullanımlarında dikkatli olmaktır. Yaygın hatalar, Struct içinde referans tiplerini yanlış kullanmak ve gereksiz kopyalar oluşturmaktır. Hata ayıklamada, Struct atamaları ve parametre geçişlerinde değer tipi semantiğini anlamak önemlidir. Performans için Struct’lar basit ve kopya maliyeti düşük olmalıdır. Güvenlik açısından ise verilerin doğru başlatılması ve tutarlı şekilde kullanılması kritik önemdedir.

📊 Referans Tablosu

C# Element/Concept Description Usage Example
struct Kullanıcı tarafından tanımlanmış değer tipi struct Nokta { public int X; public int Y; }
Yapıcı Tüm alanları başlatır public Nokta(int x, int y) { X = x; Y = y; }
Metotlar Veri ile ilişkili işlevsellik sağlar public void Yazdir() { Console.WriteLine(\$"{X}, {Y}"); }
Değer Tipi Stack üzerinde saklanır ve değerler kopyalanır Nokta n1 = n2; // tüm alanlar kopyalanır
Özellikler Alanlara erişimi kontrol eder public int Genislik { get; set; }

Struct’lar, küçük ve hızlı işlenen nesneleri temsil etmek için kritik öneme sahiptir. Değer tipi olarak davranışlarını anlamak, başlatma ve metod encapsulation uygulamak, daha büyük C# projelerinde sınıflar, arayüzler ve tasarım desenleri ile entegrasyonu kolaylaştırır. İleriye dönük olarak sınıflar, arayüzler ve tasarım desenlerini öğrenmek, Struct’ları gerçek dünya senaryolarında uygulamak için bir sonraki adımdır. Resmi Microsoft dökümantasyonu ve ileri seviye C# rehberleri ile pratik yapmak, bilgileri pekiştirmek için idealdir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu konudaki anlayışınızı pratik sorularla test edin.

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek