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#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur indépendant de jeux
    Inscrit en
    Septembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 22
    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
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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 056
    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 Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    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 Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    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 978
    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 978
    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 averti
    Homme Profil pro
    Développeur indépendant de jeux
    Inscrit en
    Septembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 22
    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?

+ 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