Aracılığıyla paylaş


Anahtar event sözcük (C# başvurusu)

Olay, bir nesnenin bildirimleri tetiklesine olanak tanıyan bir üyedir. Olay kullanıcıları, olay işleyicileri sağlayarak olaylar için yürütülebilir kod ekleyebilir. event anahtar sözcüğü bir olay bildirir. Olay bir temsilci türündedir. Bir nesne bir olayı tetiklese de, olay sağlanan tüm olay işleyicilerini çağırır. Olay işleyicileri, olaya eklenen ve olay tetiklendiğinde yürütülen temsilci örnekleridir. Olay kullanıcıları bir olaya olay işleyicilerini ekleyebilir veya kaldırabilir.

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

Aşağıdaki örnek, temel alınan temsilci türü olarak kullanan EventHandler bir olayı bildirmeyi ve tetiklemeyi gösterir. Kod örneğinin tamamı için bkz. .NET Yönergelerine uygun olayları yayımlama. Bu örnekte genel EventHandler<TEventArgs> temsilci türü, bir olaya abone olma ve olay işleyicisi yöntemi oluşturma işlemleri gösterilir.

public class SampleEventArgs
{
    public SampleEventArgs(string text) { Text = text; }
    public string Text { get; } // readonly
}

public class Publisher
{
    // Declare the delegate (if using non-generic pattern).
    public delegate void SampleEventHandler(object sender, SampleEventArgs e);

    // Declare the event.
    public event SampleEventHandler SampleEvent;

    // Wrap the event in a protected virtual method
    // to enable derived classes to raise the event.
    protected virtual void RaiseSampleEvent()
    {
        // Raise the event in a thread-safe manner using the ?. operator.
        SampleEvent?.Invoke(this, new SampleEventArgs("Hello"));
    }
}

Olaylar, yalnızca sınıf içinden (veya türetilmiş sınıflardan) veya bunları bildirdiğiniz yapıdan (yayımcı sınıfı) çağırabileceğiniz çok noktaya yayın temsilcileridir. Diğer sınıflar veya yapılar olaya abone olursa, yayımcı sınıfı olayı yükselttiğinde olay işleyici yöntemleri çağrılır. Daha fazla bilgi ve kod örnekleri için bkz . Olaylar ve Temsilciler.

Olayları , , private, protected, internal, protected internalveya private protectedolarak publicişaretleyebilirsiniz. Bu erişim değiştiricileri, sınıf kullanıcılarının olaya nasıl erişebileceğini tanımlar. Daha fazla bilgi için bkz . Erişim Değiştiricileri.

C# 14'den başlayarak, olayları olarak partialbildirebilirsiniz. Kısmi olayların bir tanımlama bildirimi ve uygulayan bildirimi vardır. Tanımlama bildirimi, alan benzeri söz dizimini kullanmalıdır. Uygulayan bildirimin add ve remove işleyicilerini bildirmesi gerekir.

Anahtar sözcükler ve olaylar

Aşağıdaki anahtar sözcükler olaylar için geçerlidir.

  • static: Sınıfın hiçbir örneği mevcut olmasa bile olayı çağıranların istediği zaman kullanılabilir duruma getirir. Statik olaylar hakkında daha fazla bilgi için bkz. Statik Sınıflar ve Statik Sınıf Üyeleri.
  • virtual: Türetilmiş sınıfların override anahtar sözcüğünü kullanarak olay davranışını geçersiz kılmasına izin verir. Sanal olaylar hakkında daha fazla bilgi için bkz . Devralma.
  • sealed: Türetilmiş sınıflar için artık sanal olmadığını belirtir.
  • abstract: Derleyici ve remove olay erişimci bloklarını oluşturmaz add ve bu nedenle türetilmiş sınıfların kendi uygulamalarını sağlaması gerekir.

static Bir olayı statik olay olarak bildirmek için anahtar sözcüğünü kullanın. Statik olaylar, sınıfın hiçbir örneği mevcut olmasa bile çağıranlar tarafından herhangi bir zamanda kullanılabilir. Daha fazla bilgi için bkz . Statik Sınıflar ve Statik Sınıf Üyeleri.

virtual Bir olayı sanal olay olarak işaretlemek için anahtar sözcüğünü kullanın. Türetilmiş sınıflar anahtar sözcüğünü override kullanarak olay davranışını geçersiz kılabilir. Daha fazla bilgi için bkz . Devralma. Sanal olayın geçersiz kılındığı bir olay, sealedtüretilmiş sınıflar için artık sanal olmadığını belirten olabilir. Son olarak, bir olay bildirilebilirabstract, yani derleyici ve add olay erişimci bloklarını remove oluşturmaz. Bu nedenle türetilmiş sınıfların kendi uygulamalarını sağlaması gerekir.

C# dili belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.