CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Les évènements en c#

inight
inight
Niveau 9
14 mai 2014 à 19:42:48

Salut à tous :)

Voila je viens tout juste de voir le concept d'évènement en c# et j'ai un peu de mal à comprendre d'où ma question :

Pourquoi s’embêter à écrire tout ce code pour au final n'avoir à faire que des appels de méthodes (via l’événement) ?

Enfin j'ai juste l'impression que l’événement se contente d'appeler une ou plusieurs méthodes en lien avec ce que l'on vient de modifier/faire; alors pourquoi ne pas simplement appeler directement la méthode ?

Merci d'avance

Enderith
Enderith
Niveau 9
14 mai 2014 à 19:55:46

Je me suis également posé cette question lors de mon apprentissage C# concernant les évènements, disons que c'est très pratique concernant l'encapsulation par exemple, afin d'avoir un objet que tu peux réutiliser de partout.
Je sais que je m'explique mal mais je vais essayer de te donner un exemple ;

J'ai crée il y a un petit mois de cela une librairie en C# qui encapsule tout le nécessaire afin de gérer la communication réseau via le protocole TCP, et grâce aux évènements je peux l'utiliser dans tout mes projets sans devoir adapter le code.

J'ai ajouté des évènements du genre connexion d'un client, déconnexion, données reçues ... D'un coté j'ai ma librairie qui se gère elle-même, et de l'autre coté j'ai une classe qui se sert de ma librairie sans en modifier le code interne.

LibTCP lib = new Lib();
lib.newClient += form1_newClient;

private void form1_newClient(Client c) {
// Actions ...
}

Grâce à ça, je n'ai pas besoin de modifier ma librairie pour lui dire d’appeler la méthode Y de la classe Form1 ... :o))

Je sais que mon explication ne t'aura pas avancée, du moins j'en doute, mais est-ce-que tu cernes le principe de la POO ? Si tu n'es pas totalement à l'aise là-dedans c'est normal que tu te poses des questions, mais je pense qu'au fur et à mesure, et surtout en te 'forçant' d'en utiliser (quand cela est nécessaire et surtout bon), tu finiras par en cerner les particularités.

Odvie
Odvie
Niveau 10
14 mai 2014 à 22:53:57

Ecrire des méthodes? Les trues utilisent des expressions lambda, c'est beaucoup plus clair :ok:

comboBox.SelectedIndexChanged += (s, e) => truc();

C'est une blague hein :hap:

inight
inight
Niveau 9
15 mai 2014 à 21:18:13

Enderith :d) Merci pour ta réponse, pour dire vrai je ne cerne surement pas le principe de la POO comme tu dis, mais j'ai globalement compris ce que tu voulais me dire

Ce que je comprends pas en lisant ton message (c'est très certainement du au fait que je ne connais pas le fonctionnement d'une librairie, comment en créer une etc..) c'est que d'un coté tu as ta librairie, et de l'autre tu as uneclasse qui implémente les méthodes qui seront utilisées par les évènements

La évènements de la librairie ne feront donc rien vu qu'on leur ajoute des méthodes dans cette classe à l'extérieur, non ?

Enderith
Enderith
Niveau 9
15 mai 2014 à 21:54:36

Cela permet de souscrire les méthodes à des évènements. Du coup je n'ai nullement besoin de modifier ma librairie pour lui dire d'appeler une méthode qui s'appelle X, alors que dans un autre projet elle va s'appeler Y, par exemple.

Ce n'est qu'une utilité parmit plusieurs des évènements.

JoResta
JoResta
Niveau 10
15 mai 2014 à 23:40:02

Coucou ici,

Enderith à plutot bien présenté la chose, je vais essayer de faire de même avec un exemple simpliste.

C'est vrai que les events sont pas forcément facile a comprendre. Il faut les prendre comme une aide très utile pour écrire le moins de code possible, une fois qu'on les connais un peu ils deviennent indispensable (ca dépend du scénario). Je prends un scénario peut être trop simpliste et complètement loufoque mais qui donne une vision des choses :

Imaginons que j'ai d'un coté un contact avec ses propriétés, comme son nom, prénom, adresse etc. De l'autre côté j'ai des services qui utilisent cette donnée pour diverses choses, affichage en direct sur une application sur mon PC, sur mon mobile, ou que cette donnée soit lié a mon compte facebook et twitter (je rappel c'est pour l'exemple). Comme j'ai bien fait les choses, j'ai ajouté un event a mon contact, qui fait que lorsque je vais le modifier, tous les services qui sont abonnées a mon événement vont être alerté que ma donnée à changé et vont pouvoir réagir en conséquence (rafraîchissement de l'affichage ou mise à jour d'une bdd a distance par exemple).

Tu peux ramener sa a un scénario plus local. Par exemple tu as un long processus qui prend 10 secondes a se faire. Il comporte plusieurs étapes, on va dire 5. Et tu aimerais que pendant ce traitement, dans ta console ou ton interface on t'indique où en est ce processus, avec une phrase par exemple. Donc tu crée un event (qui utilise comme argument un string pour notre exemple), on le nomera Report. Dans mon long calcul je vais donc pouvoir lever mon event a chaque fois qu'une étape se termine. A la fin de l'étape 1 je ferais donc Report("Fin de l'étape 1"), ce qui va donc distribuer la phrase "fin de l'étape 1" à tous ceux qui sont abonné. Dans notre petit scénario, on utilisera donc se string pour l'afficher soit dans notre console ou sur notre interface. C'est aussi bête que ca.

Évidemment il y a des scénarios bien plus complexe ou l'event devient juste la chose indispensable. Enfin indispensable pas forcement en bidouillant on arrivera certainement toujours plus ou moins a contourner le problème, c'est pour ca que je préfère dire que les events (et donc les delegate) sont des options qui simplifies la vie.

J'espère que sa t'aura éclairer, si tu veux un peu de code pour illustrer la chose ca peu se faire, mais tu trouveras sur le net je pense.

Enderith
Enderith
Niveau 9
16 mai 2014 à 00:16:38

Les events deviennent vraiment clair quand on vient à se forcer d'en utiliser (pour essayer), et qu'on pousse un peu la chose.

JoResta a fait un bon résumé 'pratique' aussi, mais comme tu as dis, plus tu comprendras la POO, plus tu cerneras mieux les évents.

inight
inight
Niveau 9
17 mai 2014 à 17:46:37

Ok merci pour les réponses :)

thetalc
thetalc
Niveau 11
21 mai 2014 à 20:37:02

J'up ce topic au lieu d'en créer un autre sur le meme thème

J'apprends les événements mais j'ai du mal à savoir quand est-ce qu'il faut les utiliser.
Au début je pensais que c'était simplement pour afficher, puis en regardant quelques exemples je vois que certains événements n'affichent rien mais font par exemple des incrémentation.

Je cherche donc à savoir quand les utiliser ? Que faut-il se dire ?
Par exemple j'ai une méthode qui ajoute un objet dans une liste, faut-il utiliser un événement ?
Car en y réfléchissant si je fais ça je peux faire pareil pour toutes les autres méthodes...

thetalc
thetalc
Niveau 11
21 mai 2014 à 21:40:59

Voici l'exemple qui me donne des doutes http://fr.openclassrooms.com/informatique/cours/apprenez-a-developper-en-c/tp-evenements-et-meteo

Ca me paraissait plus clair en me disant que les événements sont là pour notifier l'utilisateur (et donc afficher quelque chose)

JustinienPibrac
JustinienPibrac
Niveau 10
23 mai 2014 à 14:02:32

Bah les évènements ne servent qu'à "faire quelque chose" quand ils surgissent. Tu fais un peu ce que tu veux dedans après.

JustinienPibrac
JustinienPibrac
Niveau 10
23 mai 2014 à 14:03:25

Et si tu as une application graphique (GUI), oui, y'a de fortes chances que la majorité de tes fonctions soient appelées à travers des events.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment