Yazılım Mimarileri ve Tasarım Desenleri Üzerine

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

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";
        }
Mobil sürümden çık