Event (C# Başvurusu)
eventAnahtar sözcüğü bir yayımcı sınıfında bir olay bildirmek için kullanılır.
Örnek
Aşağıdaki örnek, EventHandler temel alınan temsilci türü olarak kullanan bir olayın nasıl bildirilemeyeceğini ve tetiklemeyeceğini gösterir. Ayrıca, genel EventHandler<TEventArgs> temsilci türünü kullanmayı ve bir olaya abone olmayı ve bir olay işleyici yöntemi oluşturmayı gösteren tüm kod örneği için bkz. .net yönergelerine uygun olan olayları yayımlama.
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 bildirildiği sınıf veya yapı içinden çağrılabilir olan özel bir çok noktaya yayın temsilcisi türüdür (yayımcı sınıfı). Diğer sınıflar veya yapılar olaya abone olursa, yayımcı sınıfı olayı harekete geçirirse olay işleyicisi yöntemleri çağırılır. Daha fazla bilgi ve kod örnekleri için bkz. Olaylar ve Temsilciler.
Olaylar ortak, özel, korumalı, iç, korunan içveya özel korumalıolarak işaretlenebilir. Bu erişim değiştiricileri, sınıfın kullanıcılarının olaya nasıl erişekullanabileceğinizi tanımlar. Daha fazla bilgi için bkz. erişim değiştiricileri.
Anahtar sözcükler ve olaylar
Aşağıdaki anahtar sözcükler olaylar için geçerlidir.
| Sözcükle | Description | Daha fazla bilgi edinmek için |
|---|---|---|
| static | Sınıfın bir örneği mevcut olmasa bile, olayı her zaman çağıranlar için kullanılabilir hale getirir. | Statik Sınıflar ve Statik Sınıf Üyeleri |
| sanal | Türetilmiş sınıfların, override anahtar sözcüğünü kullanarak olay davranışını geçersiz kılmasına izin verir. | Devralma |
| sealed | Türetilmiş sınıflar için artık sanal olmadığını belirtir. | |
| Soyut | Derleyici add ve remove olay erişimcisi blokları oluşturmaz ve bu nedenle türetilen sınıfların kendi uygulamasını sağlaması gerekir. |
Static anahtar sözcüğü kullanılarak bir olay statik olay olarak bildirilemez. Bu, sınıfın bir örneği mevcut olmasa bile herhangi bir zamanda olayı çağıranlar için kullanılabilir hale getirir. Daha fazla bilgi için bkz. statik sınıflar ve statik sınıf üyeleri.
Bir olay sanal anahtar sözcüğü kullanılarak sanal bir olay olarak işaretlenebilir. Bu, türetilmiş sınıfların override anahtar sözcüğünü kullanarak olay davranışını geçersiz kılmasını sağlar. Daha fazla bilgi için bkz. Devralma. Sanal bir olayı geçersiz kılan bir olay, türetilmiş sınıflar için artık sanal olmadığını belirten mühürlüda olabilir. Son olarak, bir olay soyutolarak bildirilmelidir, bu da derleyicinin add ve olay erişimcisi bloklarını üretmeyeceği anlamına gelir remove . Bu nedenle türetilen sınıfların kendi uygulaması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.