C# logo

C# Sınıf Özellikleri(Properties)

Merhaba arkadaşlar, daha önceki yazılarımdan hatırlarsınız, bir sınıfın özelliklerine erişimi belirlemek için kapsülleme kullanıyorduk.Bir özellik bir alanın değerini okumak, yazmak veya davranış belirtmek için kullanılan, sınıfın bir üyesidir.

Bir özelliğin erişimcisi, o özelliğin okunmasına, yazılmasına(değiştirilmesine) yardımcı olan ifadelerdi. Bir özellik hem okuma hem yazma özelliğini bir arada bulundurabilir. Daha iyi anlamanız için örnek aşağıdadır.

Örnek

class insan
{
  private string isim; //alan

  public string _isim //özellik
  {
    get { return isim; }
    set { isim = value; }
  }
}

Örnekte insan sınıfı hem set(düzenleme yazma) hem get(okuma) özelliklerine sahiptir. set erişimcisi, isim değişkenine bir değer atamak için kullanılır, get erişimcisi ise onu okumak(döndürmek) için kullanılır.

value set kullanılarak bir özelliğe atadığımız değeri temsil eden anahtar kelimedir.

Bir de genellikle isim özelliğine get ve set atamak için aynı özelliğin büyük harf ile başlayanı tercih edilir. Türkçe karakter sıkıntısı olduğu için ben _ kullanmayı tercih ettim.

Bu özellikler atandıktan sonra, yeni bir isim ataması yapalım ve onu okuyalım.

class insan
{
  private string isim;
  public string _isim
  {
    get { return isim; }
    set { isim= value; }
  }
}
static void Main(string[] args)
{
  insan i = new insan();
  i._Name = "DNCR";
  Console.WriteLine(i._Name);
}
// DNCR

İlla her iki erişimci de kullanılmak zorunda değildir. Sadece bir tanesini de kullanabilirsiniz.

eee tamam da zaten normalde i.isim yazınca veriyordu cevabı biz niye şimdi get’i set’i işin içine ekledik?

İşte cevap buradan geliyor. Mesela bir insanın yaş değeri 0’ın altında olabilir mi? olamaz! özellik olarak kullanmaz isek bunun kontrolünü sağlayamıyoruz. Fakat özellik açıp bunu if şartı ile kontrol edip, yaşı -3 olarak girildiğinde atama işlemine engel olabiliriz. Sözden anlamam hoca kod ver dersen buyur kod..

class insan
{
  private int yas=0;
  public int Yas
  {
    get { return yas; }
    set {
      if (value > 0) //yaş 0'dan büyük ise...
        yas= value;
    }
  }
}

Otomatik Uygulanan Özellikler

Eğer az önceki gibi şartlara ihtiyacımız yoksa, C#’da sınıf özelliklerini tanımlamak için hızlı bir yöntem vardır. Örnek olarak isim özelliğinin get ve set erişimcilerinden oluşan özel bir sınıf üyesi olarak tanımlamak isterseniz aşağıdaki gibi tanımlayabilirsiniz..

public string _isim{ get; set; }

Az önceki gibi ayrı ayrı return ve value anahtar kelimeleri kullanmamız gerekmemektedir. Bu özelliğe otomatik özellikler denilmektedir. Az önceki kodumuzun otomatik hali aşağıdadır..

//
class insan
{
  public string _isim{ get; set; }
}
static void Main(string[] args)
{
  insan i = new insan();
  i._isim = "DNCR";
  Console.WriteLine(i._isim);
}

// Çıktı DNCR

Umarım faydalı olmuştur bu tür kodları sık sık uygulayarak pekiştirmeniz gerekmektedir. Özellikle projeler de bu get ve set metotu veri tabanı arasında da köprü olacağı için sık sık kullanılmaktadır. Bu yazım ile birlikte C# sınıflar konusunu şimdilik kapatıyorum. Daha sonraki yazılarım diziler ile devam edecek…

 

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

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