Quelle est la différence entre le délégué en C# et le pointeur de fonction en C++? [dupliquer]

Doublon Possible:
y a-t-il des pointeurs de fonction en c#?

Je suis intéressé à trouver la différence entre délégué en C# et pointeur de fonction en C++.

21
demandé sur Community 2011-11-11 20:49:14

2 réponses

Un délégué en C # est un pointeur de fonction sécurisé avec un itérateur intégré.

Il est garanti de pointer vers une fonction valide avec la signature spécifiée (contrairement à C où les pointeurs peuvent être transtypés pour pointer vers qui sait quoi). Il prend également en charge le concept d'itération à travers plusieurs fonctions liées.

En C#, Les délégués sont multi-cast ce qui signifie qu'ils peuvent itérer à travers plusieurs fonctions. Par exemple:

class Program
{
   delegate void Foo();

   static void Main(string[] args)
   {
      Foo myDelegate = One;
      myDelegate += Two;

      myDelegate(); // Will call One then Two
   }

   static void One()
   {
      Console.WriteLine("In one..");
   }

   static void Two()
   {
      Console.WriteLine("In two..");
   }
}
28
répondu Mike Christensen 2014-11-09 19:16:37

Les délégués en C # peuvent être synchrones ou asynchrones; les pointeurs de fonction C++ sont synchrones sauf si vous écrivez votre propre capacité multi-threading.

Un pointeur en C / C++ n'a pas besoin de se référer à un objet complet. C avait des pointeurs de fonction et aucun support de langage orienté objet. Les délégués sont de vrais objets de fonction.

7
répondu duffymo 2011-11-11 16:53:06