C# Struct (Yapı) Nedir?

C# programlama dilinde struct'lar (yapılar) class'lara (sınıflara) oldukça benzerler; ancak struct'lar değer dipindedir (value type) ve class'lar ise referans tipindedir (reference type). Bunun pratikteki anlamı ise şudur:

- Eğer bir sınıftan (class) bir nesne oluşturursanız boş olabilir

- Bir yapıdan (stcuct) bir nesne oluşturduğunuzda ise boş olamaz

Örnek: C# programlama dilinde bir struct oluşturun oluşturun

struct Bardak
{
    public string tur;
    public double hacim;
    public DateTime uretimtarihi;
    public bool kulplu;

    public void OzellikleriGoster()
    {
        System.Console.WriteLine("Bardağın türü: {0}", tur);
        System.Console.WriteLine("Bardağın hacmi: {0} cm küp", hacim);
        System.Console.WriteLine("Bardağın üretim tarihi: {0}", uretimtarihi);
        if (kulplu)
            System.Console.WriteLine("Bardak kulplu");
        else
            System.Console.WriteLine("Bardak kulpsuz");
    }

}
Bardak bardak;
bardak.tur = "çay bardağı";
bardak.uretimtarihi = DateTime.Parse("01.01.2000");
bardak.hacim = 20;
bardak.kulplu = true;
bardak.OzellikleriGoster();

Çıktı:

Bardağın türü: çay bardağı
Bardağın hacmi: 20 cm küp
Bardağın üretim tarihi: 1/1/2000 12:00:00 AM
Bardağın kulplu

Class ve Struct Arasındaki Farklar

 - Struct'larda parametresiz constructor (kurucu) eklenemez

- Değer tipi olduğu için struct nesneleri null olamazlar, ama sınıflar için böyle bir kısıtlama yoktur

- Struct'lara Interface implement edilebilir ancak Struct'lar kalıtımı desteklemezler (başka sınıftan ya da yapıdan türetilemezler). Sınıflar ise hem kalıtımı, hem de interface'i desteklerler

- Struct elemanlarının default değeri public'tir, class elemanlarının default değeri ise private'tir.

 

Önceki bazı diğer ilgili yazılarım için;

bkz: C# Erişim Belirleyicileri (Access Modifiers)

bkz: Programlamada Encapsulation (Kapsülleme) Nedir?

bkz: C# Abstract Class ile Interface Arasındaki Farklar Nelerdir?

bkz: C# Polymorphism (Çok Biçimlilik) Nedir?

bkz: C# Virtual Metod Nedir ve Nasıl Kullanılır?

bkz: C# Sınıf ve Nesne Nedir?

mbologlu

17.05.2021 05:26

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.