Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Bir değişkene değer atandığından ve/veya değişkenin değerinin okunduğundan haberdar olmak, hatta sadece haberdar olmakla kalmayıp bir takım işler yapmak istiyorsanız kullanabileceğiniz C#'a ait dil yapısı.

Kullanımı aşağıdaki gibidir:
private int yas;

public int Yas
{
   get {
      return yas;
   }
   set {
      if(value<0 || value>120) throw new Exception("daha neler!");
      yas = value;
   }
}

Kullanıcının (client coder) private yas değişkenine erişimini engellediğimiz gibi, yas değişkeninin değiştirilmesini kontrol altına alıyoruz.
* Property'ler hem get hem set, sadece get veya sadece set olabilirler.
* interface'lerde tanımlanabilirler. Bu durumda get ve set'in method gövdesi belirtilmez. aşağıdaki gibi:

public interface IKisi {
   int Yas {
      get;
      set;
   }
}

Bu interface'i implement eden class Yas property'sini de tanımlamak zorundadır.
fizikci
23 Mayıs 2005 10:41 ~ 14 Haziran 2006 12:08
2.  bir nesnenin özelliği.
örneğin siz bir nesne olsaydınız,"şapkasız çıkmam" bir özelliğiniz olacaktı.
pepper
13 Haziran 2005 23:46
3.  property, bir nesnenin var olabilmesi için gerekli özelliklerdir. bisiklet nesnesini programımızda tanımlamamız gerekiyor diyelim. bisiklet nesnesi için gerekli property'ler şöyle sıralanabilir.

TekerlekCapi, PedalUzunlugu, PedalDisliSayisi, ArkaTekerlekDisliSayisi, TasimaKapasitesi, vb. özellikler daha da arttırılabilir. buradaki her bir özellik bisiklet sınıfımızın property'si olarak adlandırılır.

bazı özelliklere göre bisiklet sınıfımızı yazalım.

public class Bisiklet{
    private int _TekerlekCapi;
    private string _Marka;

    public int TekerlekCapi {
        get{
            return _TekerlekCapi; //getter
        }
        set{
            _TekerlekCapi = value; //setter
        }
    }

    public string Marka {
        get{
            return _Marka; //getter
        }
        set{
            _Marka = value; //setter
        }
    }

    public Bisiklet(){
    }
}

property bloğunda gördüğünüz get alanına getter, set alanına ise setter denir. getter ve setter bölümleri birer alt fonksiyon gibidir fakat parametre almazlar.

property'den veri istediğimiz zaman getter bölümü çalışır, property'ye veri yazmak istediğimiz zaman da setter bölümü çalışır.

int tekerlek = bisiklet.TekerlekCapi; //getter calisir.

bisiklet.TekerlekCapi = 28; //setter calisir.

bir property'de getter ve setter beraber kullanılmak zorunda değildir, sadece getter veya sadece setter olabilir. eğer sadece getter varsa ReadOnly property, sadece setter varsa WriteOnly property olarak adlandırılır.
bateristt
24 Haziran 2005 08:52
4.  Bir property içeren aşağıdaki basit kod il'e derlendiğinde
class Kisi
{
    private int yas;
    public int Yas {
        get {return yas;}
        set {yas = value;}
    }
}

şu kod oluşur : (get ve set metodlarına dikkat)
.class private auto ansi beforefieldinit Kisi extends [mscorlib]System.Object
{
  .field private int32 yas
  .method public hidebysig specialname instance int32 get_Yas() cil managed
  {
    // Code size       11 (0xb)
    .maxstack  1
    .locals init (int32 V_0)
    IL_0000:  ldarg.0
    IL_0001:  ldfld      int32 Kisi::yas
    IL_0006:  stloc.0
    IL_0007:  br.s       IL_0009

    IL_0009:  ldloc.0
    IL_000a:  ret
  }

  .method public hidebysig specialname instance void set_Yas(int32 'value') cil managed
  {
    // Code size       8 (0x8)
    .maxstack  2
    IL_0000:  ldarg.0
    IL_0001:  ldarg.1
    IL_0002:  stfld      int32 Kisi::yas
    IL_0007:  ret
  }

  .method public hidebysig specialname rtspecialname instance void  .ctor() cil managed
  {
    // Code size       7 (0x7)
    .maxstack  1
    IL_0000:  ldarg.0
    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
    IL_0006:  ret
  }

  .property instance int32 Yas()
  {
    .get instance int32 Kisi::get_Yas()
    .set instance void Kisi::set_Yas(int32)
  }
}


fizikci
24 Haziran 2005 18:38
5.  C# 2.0'da get ve set için access modifier belirtilebiliyor olması property'leri çok daha kullanışlı hale getirmiş.

Az önce yazdığım bir kodda lazım oldu. Kullandım mutlu oldum. Şöyle ki; projelerine dll olarak ekleyip kullansınlar diye ekibimizdeki yazılımcılar için library kodları yazıyorum. Bu kodlarda dll içinde public olarak benim set edebilmem gereken property'ler var ama bunlar kullanıcılar tarafından sadece okunabilmeli değiştirilememeli. Bir sınıf üyesi için sadece ait olduğu dll (assembly) içinden public erişim demek internal modifier'ı kullanmak demek. Kısaca property'yi şöyle yazıyoruz:

public string Prop
{
   get { return "bik";}
   internal set { cik = value; }
}

fizikci
14 Haziran 2006 12:06
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1421 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen