2010-08-26 4 views
2

Je suis curieux de savoir quelles méthodes délégués existe? Par exemple, je suis au courant des appels de méthode asynchrone, comme ceci:Combien de méthodes ont les délégués dot.Net?

class Program { 
    // define a delegate 
    delegate int MyDelegate(String s); 

    static void Main(string[] args) { 
     // create the delegate 
     MyDelegate del = new MyDelegate(myMethod); 

     // invoke the method asynchronously 
     IAsyncResult result = del.BeginInvoke("foo", null, null); 

     // get the result of that asynchronous operation 
     int retValue = del.EndInvoke(result); 

     } 
    } 

Voici « BeginInvoke() » et « EndInvoke() » méthodes, mais est-il d'autres méthodes de délégués?

Répondre

6

Tous les types de délégués dérivent de System.Delegate (tout comme tous les types enum dérivent de System.Enum), ce qui signifie qu'ils ont tous toutes les méthodes sur this page.

Ceux remarquables sont:

DynamicInvoke
GetInvocationList

Méthode static du type Delegate qui est très intéressant et tout à fait qu'il faut savoir sur (car il peut tourner mal exécuter du code réfléchi en code compilé zippy) est CreateDelegate. En outre: Equals et GetHashCode (oui, ils sont remplacés). Et jusqu'à récemment je n'étais honnêtement pas au courant des propriétés Method et Target, mais je peux imaginer qu'elles seraient très utiles dans certains contextes spécifiques.

+0

Merci beaucoup. J'ai encore une question. J'ai suivi votre lien, et dans la référence de classe de MulticastDelegate dans la bibliothèque de msdn, est mentionné que "l'exécution de langage commun fournit deux méthodes spéciales: BeginInvoke et EndInvoke". Juste d'une curiosité, savez-vous où sont déclarées ces méthodes? – kofucii

Questions connexes