Tavsiye, 2024

Editörün Seçimi

Delegeler ve C # Etkinlikleri Arasındaki Fark

olayları yöneten programda katılımcılar ve olayların kullanılması önemli bir rol oynar. Delegeler bir yönteme başvurabilirler ve C ++ 'daki fonksiyon işaretçisine oldukça benzerler. Olaylar bazı işlemlerin yapıldığını bildirir. Delegeler ve etkinlikler arasındaki temel fark, delegelerin yöntemlerin referansını tutmalarıdır ve etkinlik, delegeleri kullanarak bu yönteme erişmenin bir yolunu sağlar.

Karşılaştırma Tablosu

Karşılaştırma için temelDelegelerOlaylar
TemelBir temsilci bir yöntemin referansını tutar.Etkinlik, delegelere sağlanan çok katmanlı bir soyutlamadır.
Sözdizimitemsilci dönüş_türü delegate_name (parametre_list);olay event_delegate olay_adı;
KelimelerBir delege "delege" anahtar sözcüğü kullanılarak bildirilir.Bir olay "olay" anahtar sözcüğü kullanılarak bildirilir.
deklarasyonHerhangi bir sınıfın dışında bir temsilci ilan edilir.Bir sınıf içinde bir olay ilan edilir.
ÇağırmakBir yöntemi çağırmak için delegeye gönderilmesi gerekir.Bir yöntemi çağırmak için olaya atanması gerekir.
Kovaryans ve KontravaryansDelegelere esneklik sağlarlar.Böyle bir kavram yok.
Etkinlik ErişimcisiBöyle bir kavram yok.Olay işleyicilerinin listesini yönetir.
BağımlılıkDelegeler etkinliklerden bağımsızdır.Etkinlik delegeler olmadan oluşturulamaz.

Delegelerin Tanımı

C # delegelerinde bir yöntemi belirtmek için işlev işaretçisi olarak kullanılır. Özellikle kendisine atanmış bir yöntemi ifade eden bir nesnedir. Aynı temsilci, farklı yöntemlerin referansını tutabildiğinden, farklı yöntemlere başvurmak için kullanılabilir. Delege tarafından hangi yöntemin çağrılacağı çalışma zamanında belirlenir. Bir temsilci bildirme sözdizimi aşağıdaki gibidir:

 temsilci dönüş_türü delegate_name (parametre_list); 

Burada return_type, yöntem tarafından döndürülen, temsilci tarafından çağrılan değerin türünü bildirir ve temsilci_adı, temsilcinin adıdır. Parametre_listesi, temsilci tarafından çağrılacak yöntemlerin gerektirdiği parametrelerin listesini tanımlar.

Delegeler hakkında hatırlanması gereken bazı önemli noktalar var. İmzasına ve iade türüne uyan herhangi bir yöntemi çağırabilir. Bir temsilci hem bir örnek yöntemi hem de statik bir yöntem arayabilir. Bir örnek yöntemi çağırıyorsa, yöntemi çağırmak için nesnenin yardımını alması gerekir. Delegeler çok noktaya yayını destekler, yani kendilerine başvuran delege çağrıldığında otomatik olarak çağrılacak yöntemleri zincirleyebilirsiniz. Tek yapmanız gereken bir temsilci nesnesi yaratmanız ve ”+ =” operatörünü kullanarak yöntemleri birbiri ardına atamanız gerekir. Bir yöntemi “- =” operatörünü kullanarak da kaldırabilirsiniz.

Delegeye esneklik katan özellikler Kovaryans ve Kontravaryanstır. Kovaryans ve Kontravaryans, temsilciye atanan yöntemin geri dönüş tipi ve imzasının temsilciden farklı olduğu koşuluna izin verir.

  • Kovaryans, yöntemin dönüş türünün, temsilcinin dönüş türünü belirten sınıftan türetilmiş bir sınıf olduğu temsilciye bir yöntem atamanıza olanak tanır.
  • Kontravaryans, yöntemin parametre türünün, temsilcinin parametresi olarak belirtilen sınıfın temel sınıfı olduğu temsilciye bir yöntem atamanıza olanak tanır.

Olayların Tanımı

Olaylar, bir nesnenin durumunu değiştiren eylemdir. Etkinlikler delegeler kullanılarak bildirilir, delegeler olmadan etkinlik bildiremezsiniz. Bir etkinliğin delegelere enkapsülasyon sağladığını söyleyebilirsiniz. Olay ve olay işleyicisi olan olaylarla ilgilenirken iki önemli bileşik vardır. Nesneler olayla ilgileniyorsa, o durumda söz konusu olay için bir olay işleyicisi kaydeder. Olaylar ne zaman ateşlense, kayıtlı olay işleyicileri çağrılır. Etkinlik bildirimi aşağıdaki gibidir:

 olay event_delegate olay_adı; 

Burada “olay”, bir etkinlik bildirimini gösteren bir anahtar kelimedir. Ardından, event_delegate olayı destekleyen temsilcinin adını gösterir. O zaman, olay_adı olayın adıdır

Olaylarla ilgilenirken hatırlanması gereken bazı önemli noktalar var. Delegeler gibi, olaylar da çok noktaya yayın olabilir, yani bir etkinlik işleyicisine zincirlenen (kaydedilmiş) birden çok nesne, bir etkinlik ortaya çıktığında yanıt verir. Olay işleyicileri “+ =” işlecini kullanarak zincire eklenebilir ve “- =” işlecini kullanarak zincirlenemez. Hem statik hem de örnek yöntemi bir olay işleyicisi olarak kullanılabilir. Etkinlik erişimcisi, etkinlik işleyici listesinin uygulanmasının kontrolünü size verebilir.

Arayüz olaylar içerebilir. Olaylar ayrıca soyut olabilir; erişimci temelli olay ise soyut olamaz. Olay sanal olabilir ve türetilmiş bir sınıf tarafından geçersiz kılınabilir.

Delegeler ve C # Etkinlikleri Arasındaki Temel Farklılıklar

  1. Temsilci, bir yöntemin referansını tutmak için işlev işaretçisi olarak kullanılan bir nesnedir. Öte yandan, etkinlikler delegelere bir soyutlama sağlar.
  2. Bir temsilci bildirmek için gereken anahtar kelime bir temsilci iken, bir etkinlik bildirmek için gereken bir anahtar kelime olaydır .
  3. Bir temsilci sınıf dışında ilan edilirken sınıf içinde bir olay ilan edilir.
  4. Bir temsilci nesnesini kullanarak bir yöntemi çağırmak için, yöntemin temsilci nesnesine yönlendirilmesi gerekir. Öte yandan, bir olay nesnesini kullanarak bir yöntemi çağırmak için yöntemin olay nesnesine yönlendirilmesi gerekir.
  5. Kovaryans ve Kontravaryans, delege nesnelerine ekstra esneklik sağlar. Öte yandan, olayda böyle bir kavram yoktur.
  6. Event Accessor, etkinlik işleyicilerinin listesini işler, ancak temsilcinin böyle bir konsepti yoktur.
  7. Temsilciler, etkinliklerden bağımsızdır, ancak temsilciler olmadan etkinlikler oluşturulamaz.

Sonuç:

Temsilciler, etkinlikleri destekledikleri için faydalıdırlar ve yöntemi çalışma zamanında yürütme olanağı sağlarlar. Olay erişimcisi, olay işleyicileri çok iş parçacıklı uygulamalarda senkronize etmemizi sağlar.

Top