C# Property Özellik Kullanımı (GET ve SET Nedir? Nasıl Kullanılır?)

C# da özellikleri, metotların ve sınıfların görünürlüklerini yönetmek için kullanırız. Kısaca örneklemek gerekirse bir sınıf içerisinden farklı bir sınıf içerisinde ki nesneye ulaşmak istiyorsak özellik metotlarını kullanmalıyız. Özellik metotları GET ve SET anahtar kelimesinden oluşan iki kod bloğundan oluşurlar. GET metodu veri okunduğu zaman, SET metodu ise veri yazıldığı zaman (yani değer ataması yapıldığı zaman) yürütülür. Özellik olarak bu iki anahtar kelimeyi aynı anda kullanabildiğimiz gibi, tek anahtar kelime ile de oluşturabiliriz. Örneğin sadece GET metodu ile oluşturduğumuz özellik sadece okunabilir, SET metodu ile oluşturduğumuz özellik ise sadece yazılabilir bir hal alır. Her iki anahtar kelimeyle oluşturduğumuz özellik ise hem okunabilir hem de yazılabilir özelliğe dönüşür.

Kısaca özetlemek gerekirse, Bir Class içerisinde bulunan bazı alanlara her zaman ulaşmak gerekmez. Çünkü bir nesneyi sürekli ulaşılabilir hale getirmek bilinçsiz kullanım, veri kaybı ve güvenliği gibi sorunları ortaya çıkartır. Zaten nesneleri tanımlarken varsayılan değer olarak “Private” erişim belirleyicisi olarak tanımlanması da bu tip gerekçelerden kaynaklanır. “Public” erişim belirleyicisi ise tamamen açık hale getirir. İşte tam bu noktada nesnelerimizin erişimini yönetmek için “Property” kavramı devreye girer. “Property” yani Özellik metotları nesnelerimiz üzerinde kontrollü kullanım sağlar.

Örnek Uygulama – 1

    public class Personel
    {
        public static int PersonelSayısı;
        private static int say;
        private string isim;

        // Okuma ve Yazma Özelliği
        public string Isım
        {
            get { return isim; }
            set { isim = value; }
        }

        // Sadece Okunabilir Özelliği
        public static int Say
        {
            get { return say; }
        }

        // Yapıcı metodumuz.
        public Personel()
        {
            // Personel Sayısını Hesapla
            say = ++PersonelSayısı;
        }
    }

    class Program 
    {
        static void Main(string[] args)
        {
            Personel.PersonelSayısı = 100;
            
            Personel prsnl = new Personel();
            prsnl.Isım = "Fatih Alkan";
          
            Console.WriteLine("Personel Sayısı: {0}", Personel.PersonelSayısı); 
            //Çıktı: 101
            Console.WriteLine("Personel Ismi: {0}", prsnl.Isım); 
            //Çıktı: Fatih Alkan
        }
    }

Örnek Uygulama – 2 – Set Metodu ile 

 class Urun
    {
        private string urunad;
        private string urunkod;
        private double urunfyt;
        //Değer alıp gönderen metodumuz.
        public string UrunAd
        {
            get { return urunad; }
            set { urunad = value; }
        }
        //100-999 arasında değer üretip kullanıcıdan alınan değerle birleştirip 
        ürün kodu set ediyoruz
        public string UrunKod
        {
            get { return urunkod; }
            set
            {
                Random rnd = new Random();
                urunkod = value.ToString() + rnd.Next(100, 999).ToString();
            }
        }
        //Kullanıcıdan alınan veriyi yuvarlayıp set ediyoruz.
        public double UrunFyt
        {
            get { return urunfyt; }
            set
            {
                urunfyt = Math.Round(value, 1);
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Urun urn = new Urun();
            urn.UrunAd = "Kursun Kalem";
            urn.UrunKod = "KK";
            urn.UrunFyt = 10.786;

            Console.WriteLine("Ürün Adı: {0} - Ürün Kodu: {1} - Ürün Fiyatı: {2}", urn.UrunAd, urn.UrunKod, urn.UrunFyt);
            //ÇIKTI: Ürün Adı: Kursun Kalem
            //ÇIKTI: Ürün Kodu: KK918
            //ÇIKTI: Ürün Fiyat: 10.8
        }
    }