Temsilciler (C# Programlama Kılavuzu)Delegates (C# Programming Guide)

Temsilci , belirli bir parametre listesi ve dönüş türü olan yöntemlere yapılan başvuruları temsil eden bir türdür.A delegate is a type that represents references to methods with a particular parameter list and return type. Bir temsilci oluşturduğunuzda, örneğini uyumlu bir imza ve dönüş türü içeren herhangi bir yöntemle ilişkilendirebilirsiniz.When you instantiate a delegate, you can associate its instance with any method with a compatible signature and return type. Yöntemi, temsilci örneği aracılığıyla çağırabilirsiniz.You can invoke (or call) the method through the delegate instance.

Temsilciler, yöntemleri bağımsız değişkenler olarak diğer yöntemlere geçirmek için kullanılır.Delegates are used to pass methods as arguments to other methods. Olay işleyicileri, temsilciler aracılığıyla çağrılan yöntemlerden başka bir şey değildir.Event handlers are nothing more than methods that are invoked through delegates. Özel bir yöntem oluşturabilirsiniz ve bir pencere denetimi gibi bir sınıf, belirli bir olay olduğunda yönteminizi çağırabilir.You create a custom method, and a class such as a windows control can call your method when a certain event occurs. Aşağıdaki örnek, bir temsilci bildirimini gösterir:The following example shows a delegate declaration:

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.Any method from any accessible class or struct that matches the delegate type can be assigned to the delegate. Yöntem, statik veya örnek bir yöntem olabilir.The method can be either static or an instance method. Bu, yöntem çağrılarını programatik olarak değiştirmeyi ve varolan sınıflara yeni kod eklemeyi olanaklı kılar.This makes it possible to programmatically change method calls, and also plug new code into existing classes.

Not

Yöntem aşırı yükü bağlamında, yöntemin imzası dönüş değeri içermez.In the context of method overloading, the signature of a method does not include the return value. Ancak, temsilciler bağlamında, imza dönüş değerini içermez.But in the context of delegates, the signature does include the return value. Başka bir deyişle, bir yöntemin dönüş türü temsilciyle aynı olmalıdır.In other words, a method must have the same return type as the delegate.

Bir yönteme bir parametre olarak başvurma yeteneği, temsilciyi geri çağırma yöntemleri için ideal hale getirir.This ability to refer to a method as a parameter makes delegates ideal for defining callback methods. Örneğin, iki nesneyi karşılaştıran bir yönteme yapılan bir başvuru, bir sıralama algoritmasına bir bağımsız değişken olarak geçirilebilir.For example, a reference to a method that compares two objects could be passed as an argument to a sort algorithm. Karşılaştırma kodu ayrı bir yordamda olduğundan, sıralama algoritması daha genel bir şekilde yazılabilir.Because the comparison code is in a separate procedure, the sort algorithm can be written in a more general way.

Temsilcilere Genel BakışDelegates Overview

Temsilciler aşağıdaki özelliklere sahiptir:Delegates have the following properties:

  • Temsilciler C++ işlev işaretçilerine benzer, ancak temsilciler tam nesne yönelimli ve üye işlevlerine yönelik işaretçilerin C++ aksine, temsilciler hem bir nesne örneğini hem de bir yöntemi kapsüller.Delegates are similar to C++ function pointers, but delegates are fully object-oriented, and unlike C++ pointers to member functions, delegates encapsulate both an object instance and a method.

  • Temsilciler, yöntemlerin parametre olarak geçirilmesine olanak tanır.Delegates allow methods to be passed as parameters.

  • Temsilciler, geri çağırma yöntemlerini tanımlamak için kullanılabilir.Delegates can be used to define callback methods.

  • Temsilciler birlikte zincirleme yapılabilir; Örneğin, tek bir olay üzerine birden çok yöntem çağrılabilir.Delegates can be chained together; for example, multiple methods can be called on a single event.

  • Yöntemlerin temsilci türüyle tam olarak eşleşmesi gerekmez.Methods do not have to match the delegate type exactly. Daha fazla bilgi için bkz. Temsilcilerde varyans kullanma.For more information, see Using Variance in Delegates.

  • C#sürüm 2,0, kod bloklarının ayrı olarak tanımlanmış bir yöntem yerine parametre olarak geçirilmesine izin veren Anonim yöntemlerkavramını sunmuştur.C# version 2.0 introduced the concept of anonymous methods, which allow code blocks to be passed as parameters in place of a separately defined method. C# 3.0, satır içi kod blokları yazmak için daha kısa bir yol olarak lambda ifadelerini kullanmaya başladı.C# 3.0 introduced lambda expressions as a more concise way of writing inline code blocks. Hem anonim yöntemler hem de lambda ifadeleri (belirli bağlamlarda) temsilci türleri olarak derlenir.Both anonymous methods and lambda expressions (in certain contexts) are compiled to delegate types. Birlikte, bu özellikler artık anonim işlevler olarak bilinir.Together, these features are now known as anonymous functions. Lambda ifadeleri hakkında daha fazla bilgi için bkz. lambda ifadeleri.For more information about lambda expressions, see Lambda expressions.

Bu BölümdeIn This Section

C# Dil BelirtimiC# Language Specification

Daha fazla bilgi için bkz. C# dil belirtiminde Temsilciler .For more information, see Delegates in the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

3,0 tanımlama kitabı, üçüncü sürüm 'de Temsilciler, olaylar ve lambda ifadeleri C# : 3,0 programcılar için C# 250 ' den fazla çözümDelegates, Events, and Lambda Expressions in C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers

Öğrenme C# 3,0 C# ' deki Temsilciler ve olaylar : 3,0 temelleri anaDelegates and Events in Learning C# 3.0: Master the fundamentals of C# 3.0

Ayrıca bkz.See also