Temsilciler (C# Programlama Kılavuzu)
Temsilci, belirli bir parametre listesine ve dönüş türüne sahip yöntemlere başvuruları temsil eden bir türdür. Bir temsilci oluşturduğunuzda, örneğini uyumlu bir imza ve dönüş türü içeren herhangi bir yöntemle ilişkilendirebilirsiniz. Yöntemi, temsilci örneği aracılığıyla çağırabilirsiniz.
Temsilciler, yöntemleri bağımsız değişkenler olarak diğer yöntemlere geçirmek için kullanılır. Olay işleyicileri, temsilciler aracılığıyla çağrılan yöntemlerden başka bir şey değildir. Özel bir yöntem oluşturabilirsiniz ve bir pencere denetimi gibi bir sınıf, belirli bir olay olduğunda yönteminizi çağırabilir. Aşağıdaki örnek, bir temsilci bildirimini gösterir:
public delegate int PerformCalculation(int x, int y);
Temsilci türüyle eşleşen herhangi bir erişilebilir sınıf veya yapıdan alınan herhangi bir yöntem temsilciye atanabilir. Yöntem, statik veya örnek bir yöntem olabilir. Bu esneklik, program aracılığıyla yöntem çağrılarını değiştirebileceğiniz veya var olan sınıflara yeni kod takabileceğiniz anlamına gelir.
Not
Yöntem aşırı yükü bağlamında, yöntemin imzası dönüş değeri içermez. Ancak, temsilciler bağlamında, imza dönüş değerini içermez. Başka bir deyişle, bir yöntemin dönüş türü temsilciyle aynı olmalıdır.
Bir yönteme bir parametre olarak başvurma yeteneği, temsilciyi geri çağırma yöntemleri için ideal hale getirir. Uygulamanızdaki iki nesneyi karşılaştıran bir yöntem yazabilirsiniz. Bu yöntem bir sıralama algoritması için temsilcide kullanılabilir. Karşılaştırma kodu kitaplıktan ayrı olduğundan, sıralama yöntemi daha genel olabilir.
Benzer senaryolar için C# 9'a işlev işaretçileri eklenmiştir ve burada çağrı kuralı üzerinde daha fazla denetime ihtiyacınız vardır. Temsilciyle ilişkilendirilmiş kod, temsilci türüne eklenen sanal bir yöntem kullanılarak çağrılır. İşlev işaretçilerini kullanarak farklı kurallar belirtebilirsiniz.
Temsilcilere Genel Bakış
Temsilciler aşağıdaki özelliklere sahiptir:
- Temsilciler C++ işlev işaretçilerine benzer, ancak temsilciler tamamen nesne odaklıdır ve üye işlevlerine yönelik C++ işaretçilerinden farklı olarak, temsilciler hem nesne örneğini hem de yöntemi kapsüller.
- Temsilciler, yöntemlerin parametre olarak geçirilmesine olanak tanır.
- Temsilciler, geri çağırma yöntemlerini tanımlamak için kullanılabilir.
- Temsilciler birlikte zincirleme yapılabilir; Örneğin, tek bir olay üzerine birden çok yöntem çağrılabilir.
- Yöntemlerin temsilci türüyle tam olarak eşleşmesi gerekmez. Daha fazla bilgi için bkz. Temsilcilerde Varyansı Kullanma.
- Lambda ifadeleri satır içi kod blokları yazmanın daha kısa bir yoludur. Lambda ifadeleri (belirli bağlamlarda) temsilci türleri için derlenir. Lambda ifadeleri hakkında daha fazla bilgi için bkz. Lambda ifadeleri.
Bu Bölümde
- Temsilcileri Kullanma
- Arabirimler Yerine Temsilciler Ne Zaman Kullanılır (C# Programlama Kılavuzu)
- Temsilcilerin Adlandırılmış ve Anonim Yöntemler
- Temsilcilerde Varyans Kullanma
- Temsilcileri birleştirme (Çok Noktaya Yayın Temsilcileri)
- Temsilci bildirme, oluşturma ve kullanma
C# Dil Belirtimi
Daha fazla bilgi için bkz. C# Dil Belirtimi'ndekiTemsilciler. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.
Özel Kitap Bölümleri
- C# 3.0 Cookbook, Third Edition'da Temsilciler, Olaylar ve Lambda İfadeleri: C# 3.0 programcıları için 250'den fazla çözüm
- Learning C# 3.0'da Temsilciler ve Olaylar: C# 3.0'ın Temelleri