IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Cherche structure pour exécuter une instruction plusieurs fois


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur indépendant de jeux
    Inscrit en
    Septembre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur indépendant de jeux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Cherche structure pour exécuter une instruction plusieurs fois
    Bonjour,

    Je suis à la recherche d'une instruction ou d'un mot-clé en C# qui me permettrait de répéter une instruction un nombre donné de fois.
    Actuellement, je fais ça avec des boucles "for" et ça fonctionne parfaitement, et ma recherche a uniquement un but esthétique (lourdeur du code, patati-patata...)

    Concrètement, à la place de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int a = 0; a < x; a ++)
    FaireUnTruc();
    J'aimerais puovoir écrire:

    ou éventuellement (là je sais pas du tout si c'est possible):

    J'ai surchargé quelques méthodes pour qu'elles gèrent ça en interne ("FaireUnTruc()" devient "FaireUnTruc(int argREPETITIONS)"), mais j'aurais préféré une solution générale qui ne nécessite pas la surcharge de toutes mes méthodes.

    Merci d'avance pour vos conseils!

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Citation Envoyé par SUISUgames Voir le message
    Ca c'est tout à fait possible si rep est une fonction.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void rep(int x, Action action)
    {
    for(int i=0;i<x;i++)
    {
    action();
    }
    }
    Et ensuite appelable comme ça :
    Cependant je ne trouve pas ça plus clair ou lisible bien au contraire.

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Si on veut s'amuser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static class DelegateExtensions
    {
      public static void Call(this Action action, int count = 1)
      {
        for(int i = 0; i < count; ++i) action();
      }
    }
    Usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FaireUnTruc.Call(3); // exécuter 3 fois

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 121
    Points : 1 628
    Points
    1 628
    Par défaut
    Tu peux aussi écrire ton for sur une seule ligne si c'est ça qui gêne d'avoir 2 lignes.

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Ou simplement avec ce qui existe nativement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enumerable.Range(0, x).ToList().ForEach(it => DoSomething());

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur indépendant de jeux
    Inscrit en
    Septembre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur indépendant de jeux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous, merci pour vos réponses rapides!

    Je ne connaissais pas le mot-clé "Action". Je viens de faire quelques essais, ça ne marche pas encore exactement comme je voudrais, mais je vais lire un peu de documentation d'ici ce soir.

    J'ai toutefois dû ajouter l'instruction "using System;" au début de mon code pour avoir accès au mot-clé (je suis sur Unity), et par conséquent je me demande si ça peut avoir des conséquences (sur le poids de mon application par exemple). Qu'est-ce que vous savez à ce sujet?

  7. #7
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    Si c'est sur Unity alors ça change pas mal de trucs, il y a les Coroutines pour ce genre de chose. En plus tu peux les cadencer comme bon te semble car j'imagine que c'était le but à la base ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur indépendant de jeux
    Inscrit en
    Septembre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur indépendant de jeux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    C'est juste pour condenser les parties les plus répétitives de mon code.

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Donc le but est juste esthétique...

    Tu es fâché avec les boucles pour vouloir les masquer à tout prix ?

    Pour moi, tu prends une très mauvaise habitude.
    Dans l'optique de rendre ton code plus joli (selon tes critères personnels), tu perd en lisibilité.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur indépendant de jeux
    Inscrit en
    Septembre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur indépendant de jeux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Oui peut-être un peu. L'idée était principalement destinée aux cas de fonctions simples et courtes, mais répétitives.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter une cible plusieurs fois
    Par polymorphisme dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 29/11/2018, 15h20
  2. Réponses: 1
    Dernier message: 05/04/2017, 12h01
  3. Réponses: 4
    Dernier message: 15/03/2015, 21h18
  4. Réponses: 0
    Dernier message: 26/08/2010, 11h56
  5. Réponses: 2
    Dernier message: 12/01/2010, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo