[]

C# soru: properties için get ve set e ne için gerek var?

Yani o şekilde properties tanımlamaya ne gerek var?
public function ile de aynı işlemi yapabiliyoruz çünkü?

public void KeyChange(int x){
this.key = x;
}
bu şekilde kendimiz set edebiliyorken get ve set e ne gerek var? yan imantığını anlamadım sanırım?

 
property'ler ile yaptığını methodlar ile de yapabilirsin, evet. hatta property'ler de derlendiği zaman get ve set diye iki method oluşuyor arka planda aslında.
Ama koda baktığın zaman neyin ne iş yaptığını anlamak da önemli. property'leri bilirsin ki veri taşırlar. methodları bilirsin ki işlem yaparlar en basit anlamda. bir de hızlıca propery yazıp geçersin. "public string Name { get; set; }" gibi. yoksa dediğin gibi global bir private değişken tanımlayıp public iki tane method ile get ve set işlemini yaparsın ama kod kalabalığı olur. insan bakınca temiz kodlar görmek istiyor :)

  • barix  (12.07.13 23:13:00) 
barix teşekkür ederim cevap için, hazır cevap vermişken bir soru daha sorayım sana umarım zamanını almıyorumdur;
bu indexleyiciler tam olarak ne işimize yarıyor baktığım her örnekte nesneleri indexlemek için kullanılır deniyor ama hep örnekleri normal diziler üzerinden vermişler dolayısıyla gerçek kullanımını bir türlü anlayamadım. nerede işe yarar?

  • Yigitabi  (12.07.13 23:19:33) 
encapsulation kavramını incelersen daha detaylı bilgi bulabilirsin. (property ler için konuşuyorum)


  • ekyil  (12.07.13 23:25:28) 
rica ederim ne demek:)
şimdiye kadar indeksleyici kullanmaya pek ihtiyacım olmadı aslında. indeksleyici kullanmanın asıl amacı şu olabilir (gerçek dünyadan pek örnek veremeyeceğim, hiç ihtiyacım olmadığı için) sen elindeki bir collection'ı sarmalarsın. yani bir private değişkene atarsın, dışarıya da kendi nesneni açarsın. gelen index'e göre de mesela kullanıcının ilgili nesneye izni var mı yok muyu kontrol edip ona göre nesne dönersin ya da dönmezsin gibi işlemleri yapabilirsin. Örnek pek olmadı sanırım :D

  • barix  (12.07.13 23:30:00) 
evt yine anlamadım :D


  • Yigitabi  (12.07.13 23:30:54) 
şöyle bir örnek de olabilir. normalde senin List<Customer> türünden bir property'in var. bu property'nin içinde CustomerName'lerine göre arama yapmak istiyorsun. bunun için SearchCustomerByName(string name) {}... şeklinde bir method yapman gerekir. ama sen şöyle kullanmak istiyorsun;
customer cu= MyCustomers["ali"]; istiyorsun ki böyle kullanınca ismi ali olan customer'ları getirsin, onun için indexleyicileri kullanabilirsin.

ör;

public class IndexerSample
{
public List<Customer> customers;

public Customer this[string name] {
get
{
customers.FirstOrDefault(customer => customer.CustomerName == name);
}
}
}
IndexerSample sample = new indexerSample();
sample.customers = ... customer'ları
var customer = sample["hede"];
  • barix  (12.07.13 23:42:34) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.