Instanciation d'un delegate
Bonjour,
Soit le code ci-dessous
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
// Declare a delegate.
delegate void Printer(string s);
class TestClass
{
static void Main()
{
// Instantiate the delegate type using an anonymous method.
Printer p = delegate(string j)
{
System.Console.WriteLine(j);
};
// Results from the anonymous delegate call.
p("The delegate using the anonymous method is called.");
// The delegate instantiation using a named method "DoWork".
p = new Printer(TestClass.DoWork);
// Results from the old style delegate call.
p("The delegate using the named method is called.");
}
// The method associated with the named delegate.
static void DoWork(string k)
{
System.Console.WriteLine(k);
}
} |
Dans ce code, on remarque l'instanciation du delegué Printer par l'instruction
Code:
1 2
|
p = new Printer(TestClass.DoWork); |
Si je souhaite ajouter une autre fonction à ce délégué, on fait à nouveau
p= new Printer(nom d'une autre fonction possédant la signature du delegue Printer).
Pourquoi refaire new Printer (nom d'une autre fonction possédant la signature du délégué Printer)alors que le délégué est déjà instancié.
Je vous remercie beaucoup de votre réponse sur ce point.
Cordialement.
Bons voeux pour l'année 2017.
new_wave
instanciation d'un delegate
Bonjour et merci de votre réponse.
Si j'ai bien compris celle-ci , un delegate reférence plusieurs instances de ce délégué qui chacune pointe vers une méthode .
Peut-on dire, par abus de langage, qu'une méthode pointée par un delegate est un delegate elle-même.
Vous remerciant encore de votre réponse et vous souhaitant une bonne année,
Bien cordialement.
new_wave
instanciation d'un delegate
Bonjour et merci de ta réponse.
D'après la réponse que tu me donnes, à chaque fois q'un delegate va référencer une nouvelle méthode on le réinitialise(on refait un new) avec en argument le nom de la méthode pointée.
Mais ce qui m'est encore difficile à comprendre c'est pourquoi est -il besoin de le réinitialiser?
Est-ce que la référence créée par le new est l'adresse de la fonction pointée?
Merci beaucoup de votre réponse.
Bien cordialement.
new_wave