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 :

comment raccourcir du code ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut comment raccourcir du code ?
    Bonjour,
    J'avais le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public CalcDivision[] divisions;
    divisions = new[] { new CalcDivision(excelData, iterations, db) };
    et je me retrouve à devoir faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public CalcDivision[] divisions;
    List<CalcDivision> l = new List<CalcDivision>();
    foreach (TC tc in excelData.tcs) {
    	l.Add(new CalcDivision(constructionParameters, excelData, iterations, db, tc.divisionId));
    }
    divisions = l.ToArray();
    N'y a-t-il pas une écriture plus concise possible (sachant que je n'ai pas le "droit" de changer la déclaration "public CalcDivision[] divisions;") ?
    Merci pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut Avec Linq
    Bonjour,

    Grâce à linq vous pouvez faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<CalcDivision> l = divisions.ToList<CalcDivision>();
    bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 80
    Points : 163
    Points
    163
    Par défaut
    Je ne vois pas l'utilité de le faire plus court... M'enfin.

    Si excelData.tcs est une enumerable, y'a moyen de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    excelData.tcs.ForEach(x -> ...)
    La vrai est question et pourquoi vouloir le faire? Un code 10 vaut parfois moins que le même code sur 20 lignes. Si le code est lisible et compréhensible, c'est bien l'essentiel.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    linq est en effet parfois l'ennemi du bien
    il est possible de faire une trentaine de choses différentes sur la même ligne ... de 2500 caractères
    le tout est de doser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    Merci,
    En fait j'aurais voulu me passer d'utiliser une List temporaire et remplir mon array d'un coup.
    Là je me retrouve encore avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public CalcDivision[] divisions;
    List<CalcDivision> l = new List<CalcDivision>();
    excelData.tcs.ForEach(x => l.Add(new CalcDivision(constructionParameters, excelData, iterations, db, x.divisionId)));
    divisions = l.ToArray();
    En fonction de ce qui est possible de faire, ce qui est toujours bénéfique de connaître, je jugerai si c'est mieux ou non.

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    C'est bon, j'ai trouvé, an ajoutant "use System.Linq" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public CalcDivision[] divisions;
    divisions = excelData.tcs.Select(x => new CalcDivision(constructionParameters, excelData, iterations, db, x.divisionId)).ToArray();

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

Discussions similaires

  1. [Hardware portable] Comment entrer un code Ascii?
    Par l.sage dans le forum Ordinateurs
    Réponses: 13
    Dernier message: 11/08/2005, 13h04
  2. [C#] Comment générer le code à partir du WSDL ?
    Par Piolet dans le forum Services Web
    Réponses: 2
    Dernier message: 27/08/2004, 13h30
  3. [Juridique] Comment réutiliser le code source d'une classe ?
    Par mathieu dans le forum Général Java
    Réponses: 8
    Dernier message: 17/05/2004, 13h40
  4. [VB.NET] Comment ecrire du code entre <title>
    Par ykane dans le forum ASP.NET
    Réponses: 5
    Dernier message: 10/05/2004, 16h58
  5. [debutant] comment appliquer le code d'un bouton
    Par philippejuju dans le forum MFC
    Réponses: 3
    Dernier message: 20/01/2004, 10h56

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