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 :

Variable locale et StringBuilder


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 25
    Points
    25
    Par défaut Variable locale et StringBuilder
    Bonjour,

    je m'entraine actuellement sur le découpage de mon code c# avec des difficultés.

    Je dispose dans ma solution :
    -d'une application console.
    -Domaine (dll)
    -Service (dll)


    Dans mon Service je dispose de plusieurs classes dont :

    CreateService, permettant la création des objets, avec, par exemple, la méthode CreateFruit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Fruit CreateFruit(string nomFruit, string couleurFruit, string goutFruit)
    {
    	Fruit myFruit = new Fruit(nomFruit, couleurFruit, goutFruit);
    	return myFruit;
    }
    Dans mon Main j'instancie mon objet Fruit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CreateFruit myFruit = new CreateFruit();
    Fruit Orange = myFruit.CreateFruit("Orange", "Orange", "Amer");
    Maitenant je souhaite créer une classe GetService avec la méthode GetFruit, capable de me retourner les caractèristiques de mon fruit.

    Normalement je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Console.WriteLine(Orange.nomFruit);
    Console.WriteLine(Orange.couleurFruit);
    Console.WriteLine(Orange.goutFruit);
    Mais le but de mon exercice n'est pas là!

    Je cherche donc dans mon GetService à accéder à ma variable local (présent dans mon Main) et stocker dans un StringBuilder, les informations du Fruit.

    Dans ma méthode GetFruit, j'ai actuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Fruit GetFruit()
    {
    	StringBuilder sb = new StringBuilder();
    	sb.Append(...)
     
    	return sb.ToString();
    }
    Comment faire pour stocker dans mon StringBuilder la variable locale créé dans mon Main grâce a une autre méthode ?

    (PS : n'essayer pas de comprendre la logique du code, ceci est un exercice pour en apprendre plus)

    Merci d'avance !

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    (PS : n'essayer pas de comprendre la logique du code, ceci est un exercice pour en apprendre plus)
    Mais apprendre avec une mauvaise logique n'est pas forcément la meilleure façon d'apprendre!

    Je ne comprends pas trop ta méthode GetFruit... elle doit renvoyer un Fruit, ou une string?

    Comment faire pour stocker dans mon StringBuilder la variable locale créé dans mon Main grâce a une autre méthode ?
    Sans passer le paramètre à la méthode, il faut cette variable soit statique, mais encore une fois, j'ai du mal à comprendre ce que tu essayes de faire ici...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Ma méthode GetFruit doit renvoyer les informations de mon Fruit créé avec la méthode CreateFruit. Je ne sais pas si il vaut mieux renvoyer string ou Fruit...

    Un exemple sur ta proposition ?

  4. #4
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Un exemple quand j'ai besoin d'un objet dans toute mon application pour ne pas passer à chaque fois par les paramètres : un singleton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class varGlobals
    {
    	public static DateTime dteDeb = DateTime.Parse("01/01/2013");
    	public static DateTime dteEnd = DateTime.Parse("12/09/2013");
     
    	// Connexion Oracle
    	public static cDbOracle dbOracle = new cDbOracle();
     
    	// Connexion Sqlite
    	public static cDbSqlite dbSqlite = new cDbSqlite ();
     
    	public static cLogs Log;
    }
    Si je veux récupérer par exemple la valeur de mon dteDeb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var =  varGlobals.dteDeb
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par infosam76 Voir le message
    Un exemple quand j'ai besoin d'un objet dans toute mon application pour ne pas passer à chaque fois par les paramètres : un singleton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class varGlobals
    {
    	public static DateTime dteDeb = DateTime.Parse("01/01/2013");
    	public static DateTime dteEnd = DateTime.Parse("12/09/2013");
     
    	// Connexion Oracle
    	public static cDbOracle dbOracle = new cDbOracle();
     
    	// Connexion Sqlite
    	public static cDbSqlite dbSqlite = new cDbSqlite ();
     
    	public static cLogs Log;
    }
    Attention un singleton est un Design Pattern, incluant notamment un constructeur privé. Ce n'est pas "juste" une classe avec des champs static. Donc dans ton exemple, on ne peut pas vraiment parler de singleton
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Attention un singleton est un Design Pattern, incluant notamment un constructeur privé. Ce n'est pas "juste" une classe avec des champs static. Donc dans ton exemple, on ne peut pas vraiment parler de singleton
    Tout à fait vrai je me suis fait la remarque après avoir posté. Pour être plus correct je pense que ceci est mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    class VarGlobal
    {
          private static VarGlobal m_Instance = null;
     
          // Connexion Sqlite
          public cDbSqlite dbSqlite = new cDbSqlite (); { get; set; }
     
          public cLogs Log;
     
          private VarGlobal() { }
     
          public static VarGlobal GetInstance()
          {
                    //creer une nouvelle instance s il n en existe pas deja une autre
                    if (m_Instance == null)
                        return m_Instance = new VarGlobal();
                    else
                        return m_Instance;
          }
    }
    Qu'on utilise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VarGlobal.GetInstance().dbSqlite  ...
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

Discussions similaires

  1. text, ntext et image sont interdits dans les variables locales
    Par Sebounet19 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/07/2013, 15h44
  2. Réponses: 3
    Dernier message: 02/03/2006, 19h22
  3. [MFC] Globaliser une variable locale
    Par Philippe320 dans le forum MFC
    Réponses: 3
    Dernier message: 01/12/2005, 20h12
  4. variables locales ou globales?
    Par molesqualeux dans le forum C
    Réponses: 20
    Dernier message: 09/11/2005, 23h03
  5. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22

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