Delegate Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Statik bir yönteme veya bir sınıf örneğine ve bu sınıfın örnek yöntemine başvuran bir veri yapısı olan bir temsilciyi temsil eder.
public ref class Delegate abstract
public ref class Delegate abstract : ICloneable, System::Runtime::Serialization::ISerializable
public abstract class Delegate
public abstract class Delegate : ICloneable, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDual)]
[System.Serializable]
public abstract class Delegate : ICloneable, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDual)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Delegate : ICloneable, System.Runtime.Serialization.ISerializable
type Delegate = class
type Delegate = class
interface ICloneable
interface ISerializable
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDual)>]
[<System.Serializable>]
type Delegate = class
interface ICloneable
interface ISerializable
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDual)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Delegate = class
interface ICloneable
interface ISerializable
Public MustInherit Class Delegate
Public MustInherit Class Delegate
Implements ICloneable, ISerializable
- Devralma
-
Delegate
- Türetilmiş
- Öznitelikler
- Uygulamalar
Açıklamalar
Delegate sınıfı, temsilci türleri için temel sınıftır. Ancak, yalnızca sistem ve derleyiciler açıkça Delegate sınıfından veya MulticastDelegate sınıfından türetilebilir. Temsilci türünden yeni bir tür türetme izni de verilmemektedir. Delegate sınıfı temsilci türü olarak kabul edilmez; temsilci türlerini türetmek için kullanılan bir sınıftır.
Çoğu dil bir delegate
anahtar sözcüğü uygular ve bu diller için derleyiciler MulticastDelegate sınıfından türetilir; bu nedenle, kullanıcıların dil tarafından sağlanan delegate
anahtar sözcüğünü kullanması gerekir.
Not
Ortak dil çalışma zamanı, temsilciyle aynı imzaya sahip her temsilci türü için bir Invoke
yöntemi sağlar. Derleyiciler otomatik olarak çağırdığı için bu yöntemi açıkça C#, Visual Basic veya Visual C++'tan çağırmanız gerekmez.
Invoke
yöntemi, temsilci türünün imzasını bulmak istediğinizde yansıma yararlıdır.
Ortak dil çalışma zamanı, temsilcinin zaman uyumsuz çağrısını etkinleştirmek için her temsilci türüne BeginInvoke
ve EndInvoke
yöntemleri sağlar. Bu yöntemler hakkında daha fazla bilgi için bkz. Zaman Uyumlu Yöntemleri Zaman Uyumsuz Olarak Çağırma.
Temsilci türü bildirimi, bir veya daha fazla yöntemin imzasını belirten bir sözleşme oluşturur. Temsilci, aşağıdakilere başvurular içeren bir temsilci türünün örneğidir:
Bir türün örnek yöntemi ve bu türe atanabilir bir hedef nesne.
Resmi parametre listesinde gizli
this
parametresinin gösterildiği bir tür örneği yöntemi. Temsilcinin açık örnek temsilcisi olduğu söylenir.Statik bir yöntem.
Statik bir yöntem ve yöntemin ilk parametresine atanabilir bir hedef nesne. Temsilcinin ilk bağımsız değişkeni üzerinden kapatılacağı söylenir.
Temsilci bağlaması hakkında daha fazla bilgi için bkz. CreateDelegate(Type, Object, MethodInfo, Boolean) yöntemi aşırı yüklemesi.
Temsilci ilk bağımsız değişkeni (en yaygın durum) üzerinden kapatılan bir örnek yöntemini temsil ettiğinde, temsilci yöntemin giriş noktasına bir başvuruyu ve yöntemi tanımlayan türe atanabilen hedef adlı bir nesneye başvuruyu depolar. Bir temsilci açık örnek yöntemini temsil ettiğinde, yöntemin giriş noktasına bir başvuru depolar. Temsilci imzası, gizli this
parametresini resmi parametre listesinde içermelidir; bu durumda, temsilcinin bir hedef nesneye başvurusu yoktur ve temsilci çağrıldığında bir hedef nesne sağlanmalıdır.
Bir temsilci statik bir yöntemi temsil ettiğinde, temsilci yöntemin giriş noktasına bir başvuru depolar. Temsilci ilk bağımsız değişkeni üzerinde kapatılan statik bir yöntemi temsil ettiğinde, temsilci yöntemin giriş noktasına bir başvuruyu ve yöntemin ilk bağımsız değişkeninin türüne atanabilen hedef nesneye başvuruyu depolar. Temsilci çağrıldığında, statik yöntemin ilk bağımsız değişkeni hedef nesneyi alır. Bu ilk bağımsız değişken bir başvuru türü olmalıdır.
Bir temsilcinin çağrı listesi, listenin her öğesinin temsilci tarafından temsil edilen yöntemlerden tam olarak birini çağırdığı sıralı bir temsilci kümesidir. Çağırma listesi yinelenen yöntemler içerebilir. Çağırma sırasında yöntemler çağrı listesinde göründükleri sırayla çağrılır. Temsilci, çağırma listesindeki her yöntemi çağırmayı dener; yinelemeleri, çağrı listesinde her göründüklerinde bir kez çağrılır. Temsilciler sabittir; oluşturulduktan sonra, temsilcinin çağrı listesi değişmez.
Temsilci bir veya daha fazla yöntemi çağırabildiğinden ve işlemleri birleştirmede kullanılabildiğinden temsilciler çok noktaya yayın veya birleştirilebilir olarak adlandırılır.
Combine ve Removegibi işlemlerin birleştirilmesi, mevcut temsilcileri değiştirmez. Bunun yerine, böyle bir işlem işlemin sonuçlarını, değişmemiş bir temsilciyi veya null
içeren yeni bir temsilci döndürür. Birleştirme işlemi, işlemin sonucu en az bir yönteme başvurmayan bir temsilci olduğunda null
döndürür. bir birleştirme işlemi, istenen işlemin hiçbir etkisi olmadığında değişmemiş bir temsilci döndürür.
Not
Yönetilen diller, temsilci işlemlerini uygulamak için Combine ve Remove yöntemlerini kullanır. Örnek olarak Visual Basic'teki AddHandler
ve RemoveHandler
deyimleri ile C# içindeki temsilci türlerindeki += ve -= işleçleri verilebilir.
.NET Framework 4'den başlayarak, genel temsilci türlerinin değişken türü parametreleri olabilir. Değişken karşıtı tür parametreleri, temsilcinin parametre türleri olarak kullanılabilir ve dönüş türü olarak birlikte değişken türü parametresi kullanılabilir. Bu özellik, Kovaryans ve Contravariance'da açıklandığı gibi, tür bağımsız değişkenleri devralma ilişkisine sahip başvuru türleriyse, aynı genel tür tanımından inşa edilen genel temsilci türlerinin atamayla uyumlu olmasını sağlar.
Not
Varyans nedeniyle atamayla uyumlu olan genel temsilciler her zaman birleştirilebilir değildir. Birleştirilebilir olması için türlerin tam olarak eşleşmesi gerekir. Örneğin, Derived
adlı bir sınıfın Base
adlı bir sınıftan türetildiğini varsayalım.
Action<Base>
türünde bir temsilci (Visual Basic'teAction(Of Base)
) Action<Derived>
türünde bir değişkene atanabilir, ancak türler tam olarak eşleşmediğinden iki temsilci birleştirilemez.
Çağrılan yöntem bir özel durum oluşturursa, yöntem yürütmeyi durdurur, özel durum temsilcinin çağırana geri geçirilir ve çağırma listesindeki kalan yöntemler çağrılmıyor. Çağıranda özel durumun yakalanması bu davranışı değiştirmez.
Bir temsilci tarafından çağrılan yöntemlerin imzası bir dönüş değeri içerdiğinde, temsilci çağırma listesindeki son öğenin dönüş değerini döndürür. İmza başvuruyla geçirilen bir parametre içerdiğinde, parametrenin son değeri çağırma listesindeki her yöntemin sırayla yürütülmesi ve parametrenin değerinin güncelleştirilmesi sonucudur.
C'deki bir temsilcinin en yakın eşdeğeri bir işlev işaretçisidir. Temsilci statik bir yöntemi veya örnek yöntemini temsil edebilir. Temsilci bir örnek yöntemini temsil ettiğinde, temsilci yalnızca yöntemin giriş noktasına bir başvuruyu değil, aynı zamanda sınıf örneğine de başvuruyu depolar. İşlev işaretçilerinin aksine, temsilciler nesne odaklıdır ve tür güvenlidir.
Örnekler için bkz. System.Delegate.CreateDelegateiçin ek API açıklamaları
Oluşturucular
Delegate(Object, String) |
Belirtilen sınıf örneğinde belirtilen örnek yöntemini çağıran bir temsilci başlatır. |
Delegate(Type, String) |
Belirtilen statik yöntemi belirtilen sınıftan çağıran bir temsilci başlatır. |
Özellikler
HasSingleTarget |
Delegate tek bir çağırma hedefi olup olmadığını gösteren bir değer alır. |
Method |
Temsilci tarafından temsil edilen yöntemi alır. |
Target |
Geçerli temsilcinin örnek yöntemini çağırdığı sınıf örneğini alır. |
Yöntemler
Clone() |
Temsilcinin sığ bir kopyasını oluşturur. |
Combine(Delegate, Delegate) |
İki temsilcinin çağrı listelerini birleştirir. |
Combine(Delegate[]) |
Bir temsilci dizisinin çağrı listelerini birleştirir. |
Combine(ReadOnlySpan<Delegate>) |
Bir temsilci aralığının çağrı listelerini birleştirir. |
CombineImpl(Delegate) |
Belirtilen çok noktaya yayın (birleştirilebilir) temsilcisinin ve geçerli çok noktaya yayın (birleştirilebilir) temsilcinin çağrı listelerini birleştirir. |
CreateDelegate(Type, MethodInfo) |
Belirtilen yöntemi temsil etmek için belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, MethodInfo, Boolean) |
Belirtilen statik yöntemi temsil etmek için belirtilen türün bir temsilcisini oluşturur ve bağlanma hatasında belirtilen davranış gösterilir. |
CreateDelegate(Type, Object, MethodInfo) |
Belirtilen ilk bağımsız değişkenle belirtilen statik veya örnek yöntemini temsil eden belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, Object, MethodInfo, Boolean) |
Belirtilen statik veya örnek yöntemini temsil eden, belirtilen ilk bağımsız değişken ve bağlama hatasında belirtilen davranışla belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, Object, String) |
Belirtilen sınıf örneğinde çağrılacak belirtilen örnek yöntemini temsil eden belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, Object, String, Boolean) |
Belirtilen büyük/küçük harf duyarlılığıyla belirtilen sınıf örneğinde çağrılacak belirtilen örnek yöntemini temsil eden belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, Object, String, Boolean, Boolean) |
Belirtilen sınıf örneğinde çağrılacak belirtilen örnek yöntemini temsil eden belirtilen türde bir temsilci oluşturur; belirtilen büyük/küçük harf duyarlılığı ve bağlanma hatasında belirtilen davranış. |
CreateDelegate(Type, Type, String) |
Belirtilen sınıfın belirtilen statik yöntemini temsil eden belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, Type, String, Boolean) |
Belirtilen büyük/küçük harf duyarlılığı ile belirtilen sınıfın belirtilen statik yöntemini temsil eden belirtilen türde bir temsilci oluşturur. |
CreateDelegate(Type, Type, String, Boolean, Boolean) |
Belirtilen sınıfın belirtilen statik yöntemini temsil eden belirtilen türde, belirtilen büyük/küçük harf duyarlılığı ve bağlama hatasında belirtilen davranış ile bir temsilci oluşturur. |
DynamicInvoke(Object[]) |
Geçerli temsilci tarafından temsil edilen yöntemi dinamik olarak çağırır (geç bağlı). |
DynamicInvokeImpl(Object[]) |
Geçerli temsilci tarafından temsil edilen yöntemi dinamik olarak çağırır (geç bağlı). |
EnumerateInvocationList<TDelegate>(TDelegate) |
Bu temsilcinin çağrı hedefleri için bir numaralandırıcı alır. |
Equals(Object) |
Belirtilen nesnenin ve geçerli temsilcinin aynı türde olup olmadığını belirler ve aynı hedefleri, yöntemleri ve çağrı listesini paylaşır. |
GetHashCode() |
Temsilci için bir karma kodu döndürür. |
GetInvocationList() |
Temsilcinin çağrı listesini döndürür. |
GetMethodImpl() |
Geçerli temsilci tarafından temsil edilen yöntemini alır. |
GetObjectData(SerializationInfo, StreamingContext) |
Geçersiz.
Desteklenmez. |
GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
Remove(Delegate, Delegate) |
Bir temsilcinin çağrı listesinin son oluşumunu başka bir temsilcinin çağrı listesinden kaldırır. |
RemoveAll(Delegate, Delegate) |
Bir temsilcinin çağrı listesinin tüm oluşumlarını başka bir temsilcinin çağrı listesinden kaldırır. |
RemoveImpl(Delegate) |
Bir temsilcinin çağrı listesini başka bir temsilcinin çağrı listesinden kaldırır. |
ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
İşleçler
Equality(Delegate, Delegate) |
Belirtilen temsilcilerin eşit olup olmadığını belirler. |
Inequality(Delegate, Delegate) |
Belirtilen temsilcilerin eşit olup olmadığını belirler. |
Uzantı Metotları
GetMethodInfo(Delegate) |
Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır. |
Şunlara uygulanır
Ayrıca bkz.
- MulticastDelegate
- Zaman Uyumlu Yöntemleri Zaman Uyumsuz Olarak Çağırmayı
- Temsilcileri (C# Programlama Kılavuzu)
- Temsilcileri (Visual Basic)
- Nasıl yapılır: Temsilcileri Tanımlama ve Kullanma (C++/CLI)
- Olayları İşleme ve Oluşturma