Visual Studio C# Dersleri – C#’da Yapılar (Structs)

C# dilinde yapılar değer tipindedir . Sınıf bildirimine çok benzer şekilde tanımlanırlar. struct anahtar sözcüğü kullanılır.

Bazı durumlarda belli bir grup verinin bir arada tanımlanması için sınıfların kullanılması verimsiz olur. Sınıf kullanıldığında stack alanında referans tipte
değişken oluşturulur ve üyeler içinde heap alanında ayrıca bellek ayrılır. Verilere ulaşmak için referans kullanmak istenmeyebilir.

Bu gibi durumlarda az sayıda ve veri tipindeki değişkenleri yapı şeklinde tanımlamak hız ve verimlilik sağlayabilir.
Yapı Tanımlaması:
struct YapıAdı
{
Elemanlar;
}

struct Ogrenci
{
public int Numara;
public string Ad;
public string Soyad;
}
Şeklinde tanımlanır. Yapılar daha çok birbiri ile ilişkili değerleri bir araya toplamak için kullanılır.
Hemen bir Örnek verelim

struct Ogrenci
{
public int Numara;
public string Ad;
public string Soyad;
}
public static void Main()
{
Ogrenci ogr1 = new Ogrenci();
ogr1.Numara = 123;
ogr1.Ad = "Ahmet";
ogr1.Soyad = "Ay";
Ogrenci ogr2 = ogr1;
ogr2.Numara = 1453;
Console.WriteLine("{0} {1} {2}", ogr1.Numara, ogr1.Ad, ogr1.Soyad);
Console.WriteLine("{0} {1} {2}", ogr2.Numara, ogr2.Ad, ogr2.Soyad);
Console.ReadKey();
}

Program Çalıştığında
123 Ahmet Ay
1453 Ahmet Ay şeklinde çıktı verir dikkat ederseniz kodlarda Ogrenci ogr2 = ogr1; ile öğrenci1 ve 2’yi aynı yaptıktdan sonra ogr2.Numara = 1453; numarasını değiştirmiştik.
Yapılar değer tipidir ve yapı türündeki nesneler stack alanında saklanır.

Yapılar da diğer tüm nesneler gibi object sınıfından türetilmiştir.

Yapılar kalıtımı desteklemez, türetme yapılamaz.

Yapılar tanımlandıktan sonra bir yapı nesnesi oluşturmak için yine new operatörü kullanılır.

Varsayılan yapıcı metot ya da bizim belirlediğimiz yapıcı metot çalışarak ilk değer ataması yapar.

Sınıflardan farklı olarak new kullanılmadan da yapılar tanımlanabilir.

Bu şekilde tanımlanan yapı nesnelerinin üye elemanlarına ilk değer elle verilmelidir.

Yapı nesnesinin elemanlarına sınıflarda olduğu gibi “.” ile erişilir.

Yapılar (Structs) Avantajları

Yapıların bazı avantajları göz önünde bulundurularak belli problemlerin çözümünde kullanılabilirler:

Stack bellek alanında yer ayırma, kopyalama gibi işlemler heap alanından dahahızlıdır.

Sınıf nesneleri Garbage Collection mekanizması ile heap alanından silindikleri için yıkıcı metotların ne zaman çağrılacağı kesin bilinemez. Yapılarda yıkıcı metot olmamasına rağmen faaliyet alanı bitiminde bellekten otomatik silinirler.

Yapıları, atama oparatörü ile kopyalayabiliriz. Yapılarda, atama işlemi sonucundadeğerler kopyalanır, fakat sınıf nesnelerinde sınıfın içeriği değil referanslar kopyalanır.

Pin It on Pinterest