C# - Özellikler (Property)

Class ların en temel üyelerinden field (alan) ların dışarıdan erişilebilmeleri yani "public" olmaları genellikle önerilmeyen bir durumdur. Class içindeki işlevler için kullanılmaları daha faydalıdır. Sınıfınızın dışardan erişmek istediğiniz field gibi üyeleri için "Property" (özellik) leri kullanmak daha mantıklıdır.

Property ler field ların denetimini sağlar diyebiliriz. Bir field ın salt okunur (read-only) yazılıp yazılmadığını belirtmek bunlardan biridir.

Property ler field ile fonksiyon arasında bir konumdadır diyebiliriz. Tıpkı field lar gibi görünürlüğü (public, private..), veri türü (int, string..) ve adı vardır. Ayrıca fonksiyon gibi de kod bloğu için gövdelere sahiptir.

Aşağıda bir Property (özellik) örneği verilmiştir.

public string Ad
{
     get { return _ad; }
     set { _ad = value; }
}

"get" (değeri alma) ve "set" (değeri okuma) keyword (anahtar sözcük) leri Property lerin en önemli özelliğidir. Bazı durumlarda sadece "get" veya "set" özellikleri atanabilir. Örnek olarak "PiSayisi" adında bir Property miz olsun. Burada sadece "get" kullanmamız gerekecektir. Çünkü değeri "3.14" tür ve herhangi başka bir değer atanamaz. Bu yüzden Read-Only (salt-okunan) bir Property olmak zorundadır.

Aşağıdaki kodu inceleyelim..

using System;
namespace OzelliklerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Matematik mat = new Matematik();

            /*Örnek 1*/
            decimal piSayim = mat.Pi;

            /*Örnek 2*/
            mat.Pi = 4M;            
        }
    }
          
    public class Matematik
    {
        private decimal _pi = 3.14M;
        public decimal Pi
        {
            get { return _pi; }
        }
    }

}

Burada "Matematik" class ında "Pi" adında bir Property yarattık ve bu sadece "get" yöntemi olan salt-okunur bir durumda. "Örnek 1" içinde "piSayim" isimli değişkene kendisinin değeri olan "3.14" atanmaktadır. Burada bir sorun yoktur. Fakat "Örnek 2" de bu property e "4" değeri atanmak istenmektedir ve kod hata verecektir. Hatada da gayet açık olarak durum anlatılmaktadır. "cannot be assigned to --it is read only" (değer atanamadı -- salt okunurdur.)

Yukarıdaki örnek durumu gayet açık bir şekilde göstermektedir. Property ve field lar genellikle birbirleriyle beraber kullanılırlar. Mecburi olmasa da kod yazım standartlarında Property ve ilgili field ı aynı isimde olur. Fakat field lar başında "_" işareti ve küçük harfle başlar. Property ler ise Büyük Harfle başlamaktadır. Deminde belirttiğimiz gibi bu durum mecburi değildir.

Aşağıdaki kodda buna bir örnek verilmiştir..

private string _ad = "Ayşe";
public string Ad
{
     get { return _ad; }
     set { _ad = value; }
}

Burada "get" yöntemi "_ad" field ının değerini bize dündürür. "set" yöntemi ise iletilen değeri "_ad" alanına atayacaktır. "value" burda özel anahtar kelime değeridir ve değeri iletmeye yarar.



İlginizi Çekebilir

C# - Parametre

C# - Namespace

C# - Görünürlük

C# - Interface

C# - Aşırı Yükleme (Overload)