Delegate Sınıf

Tanım

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 sınıfından Delegate veya sınıfından MulticastDelegate türetilebilir. Ayrıca, temsilci türünden yeni bir tür türetmek de mümkün değildir. Delegate Sınıfı bir 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ük uygular ve bu diller için derleyiciler sınıfından MulticastDelegate türetilir; bu nedenle, kullanıcıların dil tarafından sağlanan anahtar sözcüğü kullanması delegate gerekir.

Not

Ortak dil çalışma zamanı, her temsilci türü için temsilciyle aynı imzaya sahip bir Invoke yöntem sağlar. Derleyiciler otomatik olarak çağırdığından bu yöntemi C#, Visual Basic veya Visual C++'tan açıkça çağırmanız gerekmez. yöntemi Invoke , temsilci türünün imzasını bulmak istediğinizde yansımada 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ünün 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.

  • Bir türün örnek yöntemi, gizli this parametre resmi parametre listesinde kullanıma sunuldu. 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ılması söylenir.

Temsilci bağlaması hakkında daha fazla bilgi için bkz CreateDelegate(Type, Object, MethodInfo, Boolean) . yöntem 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 bir örnek yöntemini temsil ettiğinde, yöntemin giriş noktasına bir başvuru depolar. Temsilci imzası, gizli this parametreyi resmi parametre listesine eklemelidir; 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 üzerinden kapatılan statik bir yöntemi temsil ettiğinde, temsilci yöntemin giriş noktasına bir başvuru ve yöntemin ilk bağımsız değişkeninin türüne atanabilir bir hedef nesne başvurusu 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. Bir çağrı 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ğırmaya çalışır; 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ğırabileceğinden ve işlemleri birleştirmede kullanılabildiğinden, temsilciler çok noktaya yayın veya birleştirilebilir olarak adlandırılır.

ve Removegibi Combine işlemlerin birleştirilmesi, var olan temsilcileri değiştirmez. Bunun yerine, böyle bir işlem işlemin sonuçlarını, değişmemiş bir temsilciyi veya nulliç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 döndürür null . 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 ve Remove yöntemlerini kullanırCombine. Örnek olarak Visual Basic'teki ve RemoveHandler deyimleri ile C# dilindeki temsilci türlerindeki += ve -= işleçleri verilebilirAddHandler.

.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 Kontravaryans'ta 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, adlı bir sınıfın adlı DerivedBasebir sınıftan türetildiğini varsayalım. Türünde Action<Base> bir temsilci (Action(Of Base) Visual Basic'te) türünde Action<Derived>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 diğer 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şvuru tarafından geçirilen bir parametre içerdiğinde, parametrenin son değeri çağrı listesindeki her yöntemin sırayla yürütülmesinin ve parametrenin değerinin güncelleştirilmesinin sonucudur.

C'de 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.CreateDelegate iç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

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.

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.

CombineImpl(Delegate)

Belirtilen çok noktaya yayın (birleştirilebilir) temsilcisinin ve geçerli çok noktaya yayın (birleştirilebilir) temsilcisinin ç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ürde bir temsilci oluşturur ve bağlama hatasında belirtilen davranışla birlikte.

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 ilk bağımsız değişken ve bağlama hatasında belirtilen davranış ile belirtilen statik veya örnek yöntemini temsil eden 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 büyük/küçük harf duyarlılığı ve bağlama hatasında belirtilen davranış ile belirtilen sınıf örneğinde çağrılacak belirtilen örnek yöntemini temsil eden belirtilen türde bir temsilci oluşturur.

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 büyük/küçük harf duyarlılığı ve bağlama hatasında belirtilen davranış ile belirtilen sınıfın belirtilen statik yöntemini temsil eden belirtilen türde 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)

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.

Equals(Object)

Belirtilen nesnenin ve geçerli temsilcinin aynı türde olup olmadığını belirler ve aynı hedefleri, yöntemleri ve çağırma 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öntemi alır.

GetObjectData(SerializationInfo, StreamingContext)
Geçersiz.

Desteklenmez.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ 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 dizeyi 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.