cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 26 nov. 2006 à 19:21
Salut,
Pour l'assignation non c'est bon, C# 2.0 le permet. Mais j'ai tendance à trouver ça moins lisible que la forme standard.
Pour citer quelques intérêts de l'event :
- il ne peut être invoqué que par le code de la classe qui le contient, le delegate peut être invoqué par n'importe quel code y accédant, ce qui peut poser des problèmes
- en mode design, je ne crois pas que pour un composant graphique un delegate apparaisse dans la liste des évènement du PropertyGrid (je ne sais pas non plus du coup ce que ça donne en VB.NET)
- un event peut être défini dans une interface, pas le delegate vu qu'il s'agit d'un champs
- sur un event on peut redéfinir add/remove, utile pour ajouter des fonctionnalités de log par exemple, ou tout simplement effectuer une action nécessaire.
public event delegCreation OnAssign
{
add
{
// ajouter du code ici
OnAssign += value;
}
- comme le dit taupe4, tu ne peux sortir la déclaration de delegCreation de la classe, ce serait bête de redéclarer à tout bout de champs des delegate ayant la même signature. Exemple : EventHandler dans le Framework .NET.
Après il doit y avoir encore pas mal d'autres différences en profondeur que je n'ai pas en tête là.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 26 nov. 2006 à 20:26
Euh en fait comme tout le monde l'aura compris cette phrase là est une annerie :p (non non, je ne boit pas -_-) :
"ce serait bête de redéclarer à tout bout de champs des delegate ayant la même signature. Exemple : EventHandler dans le Framework .NET."
Du coup, taupe4, qu'est ce que tu entendais pas "essaie de sortir le delegate de class Tableau ;)" ?
Sinon j'ai aussi fait une légère erreur sur le code ci dessus, il devrait plutôt être ainsi :
private delegCreation _onAssign;
public event delegCreation OnAssign
{
add
{
// ajouter du code ici
this._onAssign += value;
}
taupe4
Messages postés91Date d'inscriptiondimanche 16 avril 2006StatutMembreDernière intervention17 avril 20081 27 nov. 2006 à 00:13
Dans les codes que j'ai vu, les delegates étaient à même le namespace, afin que plusieurs events utilisant ce delegate (par exemples les EventHandler) le fassent sans avoir à redéclarer les delegates ;)
public delegate void delegCreation(object sender);
class Tableau{
private delegCreation _onAssign;public event delegCreation OnAssign
{
add
{
// ajouter du code ici
this._onAssign += value;
}
remove{
// ajouter du code ici
this._onAssign -= value;
}
}
}
class Exemple2{
public event delegCreation OnDataChanged;
}
Enjoy
Vous n’avez pas trouvé la réponse que vous recherchez ?
olivgiov
Messages postés11Date d'inscriptionsamedi 7 octobre 2006StatutMembreDernière intervention 2 avril 2007 27 nov. 2006 à 10:18
Merci pour vos réponse rapide.
vous dîtes:
"- comme le dit taupe4, tu ne peux sortir la déclaration de delegCreation de la classe, ce serait bête de redéclarer à tout bout de champs des delegate ayant la même signature. Exemple : EventHandler dans le Framework .NET."
Serait-il possible d'avoir un exemple où l'on sortirait delegcreation de la classe où ca ne fonctionnerait pas avec Event et où ça fonctionnerait uniquement avec un delegate sans event ?
Que veux tu dire par "redéclarer à tout bout de champs des delegate ..." ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 27 nov. 2006 à 18:58
Si tu as besoin de simuler / forcer un event c'est que tu as mit du code dans la méthode associée qui aurait dû se trouver dans une autre méthode, accessible quand à elle.
L'event est là pour permettre de notifier quelquechose au monde extérieur, pas pour être déclenché depuis celui ci.