[]
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?
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 :)
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?
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
ş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"];
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