Non, ton n'exemple n'est pas bon, et le brevet ne couvre pas les classiques pointeurs de fonction. Les "delegates" en C# pointent vers une méthode dans le contexte d'un objet particulier.
Concrêtement si je fais en C# :
button1.Click += OnClickMethod;
où OnClickMethod est une méthode d'instance (et non pas une fonction "static" ou "globale" comme ton exemple en C). Le compilateur rattache automatiquement l'instance de l'objet qui fait l'action pour former un couple instance+pointeur_methode.
Tu as voulu copier l'exemple Vala et le traduire en C, en fait il fallait plutôt que t'essai de traduire le 2ème exemple. Forcement t'aurais pas réussi sans faire une référence explicite à une structure pour simuler un objet, là où le brevet concerne justement une référencement implicite et automatique.
Après je vais pas dire que c'est une révolution ou même une invention, juste une petite évolution qui permet à C# d'avoir une façon simple de passer une méthode d'instance en tant qu'objet. (Exemple : abonnement/désabonnement à un événement).
[^] # Re: Je tiendrai jusqu'à demain
Posté par TImaniac (site web personnel) . En réponse au journal Mono pour Android en version 1.0. Évalué à 0.
Non, ton n'exemple n'est pas bon, et le brevet ne couvre pas les classiques pointeurs de fonction. Les "delegates" en C# pointent vers une méthode dans le contexte d'un objet particulier.
Concrêtement si je fais en C# :
button1.Click += OnClickMethod;
où OnClickMethod est une méthode d'instance (et non pas une fonction "static" ou "globale" comme ton exemple en C). Le compilateur rattache automatiquement l'instance de l'objet qui fait l'action pour former un couple instance+pointeur_methode.
Tu as voulu copier l'exemple Vala et le traduire en C, en fait il fallait plutôt que t'essai de traduire le 2ème exemple. Forcement t'aurais pas réussi sans faire une référence explicite à une structure pour simuler un objet, là où le brevet concerne justement une référencement implicite et automatique.
Après je vais pas dire que c'est une révolution ou même une invention, juste une petite évolution qui permet à C# d'avoir une façon simple de passer une méthode d'instance en tant qu'objet. (Exemple : abonnement/désabonnement à un événement).