Olaylar ve Temsilciler ve ilgili uygulamaları arasındaki fark
Delegeler, sözdizimsel şeker olmaktan daha başka olaylar kullanmanın avantajları görmüyorum. Belki de yanlış anlama ama bu olay temsilci için sadece bir yer tutucudur gibi görünüyor.
Bana hangi kullanmak için zaman farkları açıklar mısınız? Ne avantajları ve dezavantajları nelerdir? Kodumuzu ağır olaylara dayanıyor ve bunun altına almak istiyorum.
Ne zaman olaylar üzerinde delege ve tersi kullanırsınız? Lütfen her iki ile gerçek dünya deneyimi devlet, üretim kodu söylüyorlar.
CEVAP
Anahtar event
çok noktaya yayın kapsamı delegeler için bir değiştirici. Bu ve bir çok noktaya yayın temsilci ilan sadece pratik arasındaki farkları aşağıdaki gibidir:
- Bir arabirim
event
kullanabilirsiniz. - Çok noktaya yayın temsilci çağırma access ilan sınıfı ile sınırlıdır. Davranışlarına rağmen temsilci çağırma için özel olarak. Atama amacıyla, erişime açık bir erişim değiştiricisi (örn
public event
) ile belirtilir.
Biraz ilgi, sen-ebilmek uygulamak
-
çok noktaya yayın delegeler, ve bu temeli =
-=
sözdizimi şifresini atama delegeleri için olaylar. Bu üç parçacıkları eşdeğer
B = new EventHandler(this.MethodB);
C = new EventHandler(this.MethodC);
A = B C;
İki örnek, doğrudan atama ve kombinasyon atama hem gösteren.
B = new EventHandler(this.MethodB);
C = new EventHandler(this.MethodC);
A = B;
A = C;
Örnek üç: daha tanıdık bir sözdizimi. Muhtemelen tüm işleyicileri kaldırmak için boş atama ile tanışmış.
B = new EventHandler(this.MethodB);
C = new EventHandler(this.MethodC);
A = null;
A = B;
A = C;
Özellikleri gibi, olayları hiç kimse kullanan tam bir sözdizimi vardır. Bu:
class myExample
{
internal EventHandler eh;
public event EventHandler OnSubmit
{
add
{
eh = Delegate.Combine(eh, value) as EventHandler;
}
remove
{
eh = Delegate.Remove(eh, value) as EventHandler;
}
}
...
}
...yoktam olarakbu da olduğu gibi
class myExample
{
public event EventHandler OnSubmit;
}
Ekle ve kaldır yöntemleri VB.NET kullanan oldukça tumturaklı söz daha dikkat çekicidir (operatör aşırı yükleme).
C arasındaki fark operatörü ile ilgili...
DOMContentLoaded ve Yük olaylar arasın...
Builder Tasarım deseni ve Fabrika Tasa...
ASP.NET MVC ApiController ve Denetleyi...
Ruby ve Ruby 1.9 1.8 arasındaki fark n...