Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# Class Extra Bilgiler

Bu yazımda C#’ta Class yapısına devam edeceğim.Önceki yazılarım arasında Class sınıfına girişte bulunmuştum.Bu yazıda ise,öncekilerde bahsetmediğim teferruatlar mevcuttur.Önceki yazılara şu linklerden ulaşabilirsiniz.
C#’ta Class Yapısı – 1
C#’ta Class Yapısı – 2

Bu yazıyı okumaya başlamadan önce yukardaki yazıları sırasıyla gözden geçirmenizi tavsiye ederim.
Şimdi ClassExtra isimli bir class dosyası oluşturuyorum ve içine iki property ekliyorum.

    class ClassExtra
    {
        int OdaSayisi;

        public int OdaSayisi1
        {
            get { return OdaSayisi; }
            set { OdaSayisi = value; }
        }
        public string Semt { get; set; }
    }

Şimdi bu class üzeride çalışma yaparak bazı konuları izah etmeye çalışacağım.
this anahtar sözcüğünün kullanım biçimleri;
Bildiğimiz gibi this anahtar sözcüğü “bu classta” demektir.Yani o an çalıştığımız classı ifade etmektedir.
Şimdi ben ClassExtra classına iki constructor yazacağım.Biri boş constructor,biride ClassExtra classındaki propertylere parametrelerinden değer aktaran constructor.

        public ClassExtra()
        {

        }
        public ClassExtra(int odaSayisi, string Semt)
        {
            this.OdaSayisi1 = odaSayisi;
            this.Semt = Semt;
        }

Şimdi ben ClassExtra nesne = new ClassExtra() şeklinde bir nesne oluşturursam, ClassExtra sınıfının boş constructorı çalışacaktır.Bu şekilde olunca varsayılan(default) constructor devre dışı olduğundan dolayı propertylere varsayılan değerler aktarılamayacaktır.Ben bu şekilde nesne oluşturduğum da parametre alan nesneyi çalıştırmak istiyorsam eğer aşağıdaki gibi çalışmam lazım.

        public ClassExtra():this(3,"Aydınlıkevler")
        {

        }
        public ClassExtra(int odaSayisi, string Semt)
        {
            this.OdaSayisi1 = odaSayisi;
            this.Semt = Semt;
        }

Yukarda ne olduğunu izah edeyim.ClassExtra nesne=new ClassExtra() şeklinde nesne oluşturduğumuz zaman boş constructor çalışacaktır.public ClassExtra():this(3,”Aydınlıkevler”) kadar okuyup, kendi scopeuna girmeden o parametreli constructorı bulacak ve ona gidecektir.Sonra parametrelerin değerlerini propertylere set edecek.Parametreli constructordan çıkınca,boş constructora geri gelecek ve kaldığı yerden boş constructorın scopeuna girecektir.
Şimdi ClassExtra sınıfından boş constructor çalışacak şekilde bir nesne oluşturalım.

            ClassExtra nesne = new ClassExtra();
            this.Text = nesne.OdaSayisi1 + " " + nesne.Semt;

Yukardaki kodlar derlendiği zaman formun başlığında “3 Aydınlıkevler” yazdığını göreceksiniz.Boş constructor kullandığımız halde this komutu sayesinde parametreli constructorı çalıştırabildik.


Constructorlar private yapıldığı zaman o constructora erişilemez.Sadece bu classta erişilebilir.


Classlar içine, o class tipinden nesne döndüren static metodlar da yazılabilir.

        public static ClassExtra NesneVer()
        {
            return new ClassExtra();
        }

Static Constructor

  • Constructorlar da static olarak işaretlenebilirler.
  • public,private gibi erişim belirleyicisi ALAMAZLAR.
  • Parametre ALAMAZLAR.
  • Bir classtan bir nesne yaratılır yaratılmaz,diğer tüm constructorlardan önce çalışırlar.
  • Sadece bir kere çalışırlar.Yani bu classtan ilk nesne yaratıldığında tüm diğer constructorlardan önce çalışacak,ikinci nesne yaratıldığında çalışmayacaktır.
  • Sadece bir classtan nesne yaratıldığında değil,o class içindeki herhangi bir static yapı ilk kullanıldığında da çalışır.
  • Kullanım amaçları genellikle , class içinde static yapılara ilk değerlerini vermektir.
  • Sabitler(const) kendiliğinden static yapılardır.Bir class içinde sabit bir alan tanımlanıyorsa başına static dememize gerek yok.Doğal olarak statictirler.Eğer o class içinde sabit çalıştırılırsa eğer static olduğundan dolayı, sabit çalışmadan static constructor çalışacaktır.
NOT: Static yapılar içinde static olmayan yapılar kullanılamaz.
public static int sayi;
static ClassExtra()
 {
  sayi = 3;
 }

Static bir yapı içinde illaki static olmayan bir yapı kullanmak istiyorsanız, onu ancak ve ancak nesne üzerinden yapabilirsiniz.

        public static void Deneme(ClassExtra nesne)
        {
            nesne.Semt = "Keçiören";
        }

Bunlar da hoşunuza gidebilir...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir