Sınıfın private bölümündeki veri elemanlarına erişen get ve set metodlarının kolay yazılıp kullanılabilmesi için property kavramı düşünülmüştür. Property get ve set metodlarından başka birşey değildir. C++ ve Java’da property kavramı yoktur. Bu dillerde erişim yine get ve set metodlarıyla yapılmaktadır. Property bildiriminin genel biçimi Şöyledir:
1 |
[erişim belirleyicisi]<tür><isim> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Sample { //... public int Val { get { //... } set { //... } } //... } |
Bir property’de get ve set isminde 2 bölüm bulunur. Bu bölümlerden yalnızca biri bulunabilir ya da her ikiside bulunabilir.
Property içerisindeki değeri almak için veya içerisine değer yerleştirmek için kullanılır. Eğer property, içerisindeki değerin alınması amacıyla kullanılmışsa, property’nin get bölümü; içerisine değer yerleştirmek amacıyla kullanılmışsa, set bölümü çalışır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; namespace CSD { class App { public static void Main() { Sample s = new Sample(); s.A = 10; Console.WriteLine(s.A); } } class Sample { private int a; //... public int A { get { //... } set { //... } //... } } } |
Property’nin get bölümü geri dönüş değeri property türünden olan parametresi olmayan bir metod gibidir. get bölümünde tipik olarak programcı ilişki kurulacak private veri elemanıyla geri döner. Bir property içindeki değerin alınacağı bir ifadede kullanıldığında property’nin get bölümü çalıştırılır. Buradan elde edilen değer işleme sokulur.
Property’nin set bölümü, parametresi property türünden olan geri dönüş değeri void olan bir metod gibidir. Property değer atama amacıyla kullanıldığında derleyici atanacak değeri hesaplar ve bu değeri property’nin set bölümüne parametre olarak geçirir. set bölümünde value anahtar sözcüğü set bölümüne geçirilen parametreyi temsil eder. set bölümünde programcı tipik olarak bu value değerini ilgili veri elemanına atar. Örneğin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System; namespace CSD { class App { public static void Main() { Sample s = new Sample(); s.A = 100 + 200; int result; Console.WriteLine(result); } } class Sample { private int a; //... public int A { get { //... } set { //... a = value; } //... } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
using System; namespace CSD { class App { public static void Main() { Date date = new Date(10, 12, 1990); Console.WriteLine("{0}/{1}/{2}", date.Day, date.Month, date.Year); date.Day = 11; date.Month = 8; date.Year = 2003; Console.WriteLine("{0}/{1}/{2}", date.Day, date.Month, date.Year); } } class Date { private int day, month, year; public Date() { } public Date (int d, int m, int y) { day = d; month = m; year = y; } public int Day { get { return day; } set { day = value; } } public int Month { get { return month; } set { month = value; } } public int Year { get { return year; } set { year = value; } } //... } } |
Static Property’ler
Sınıfların static veri elemanlarınıda yine private bölüme yerleştirmek ve onlara get ve set metodlarıyla erişmek iyi bir tekniktir. Çünkü onlarında isimleri ve türleri değiştirilebilir. Sınıfın static elemanlarına erişen property’lerin static olması gerekir. Static property’ler yine sınıf ismiyle kullanılır. Örneğin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System; namespace CSD { class App { public static void Main() { Sample.A = 10; Console.WriteLine(Sample.A); } } class Sample { private static int a; //... public static int A { get { //... return a; } set { //... a = value; } } //... } } |