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++.
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..");
}
}
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.