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 :

Question sur les appels de méthodes et sur Console.ReadLine()


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Question sur les appels de méthodes et sur Console.ReadLine()
    Bonjour à tous,

    Je suis archi débutant et j'essaie d'apprendre un peu le c#, mais j'ai deux petites questions.

    1er : je sais que quand je fais Console.ReadKey(), je peux mettre en argument "true" pour ne pas voir la touche que l'user mets mais comment faire avec Console.ReadLine() ? J'ai essayé true/false, ça marche pas.

    2em : je fais des exos que j'avais eu en Java en C#, et par exemple, je dois souvent refaire la methode qui va m'afficher mon tableau à 2Dim, il existe un moyen pour aller chercher cette méthode dans un de mes projets au lieu de le ré-écrire ou de Copier/Coller ? (je n'en suis pas encore à la POO et je bosse en console)

    Merci d'avance !

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    653
    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 : 653
    Points : 2 181
    Points
    2 181
    Par défaut
    Bonsoir,

    Il n'y a pas de méthode toute faite pour ce que tu veux faire mais elle est très facile à faire :

    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
    22
    23
    24
    25
    26
           public static string GetHiddenText()
            {
                StringBuilder text = new StringBuilder();
     
                while (true)
                {
                    var key = Console.ReadKey(true);
     
                    if (key.Key == ConsoleKey.Enter)
                    {
                        break;
                    }
     
                    if (key.Key == ConsoleKey.Backspace && text.Length > 0)
                    {
                        text.Remove(text.Length - 1, 1);
                    }
     
                    else if (key.Key != ConsoleKey.Backspace)
                    {
                        text.Append(key.KeyChar);
                    }
                }
     
                return text.ToString();
            }
    Ici c'est simple, on utilise bêtement Console.ReadKey() jusqu'à qu'un appui sur Entrée soit détecté, tout en gérant la suppression de caractère.

    Pour le deuxième point, je te conseille (si c'est pas déjà le cas) de regrouper tous tes exercices dans un seul et même projet / solution. Ainsi tu peux te faire une petite classe du genre Tools.cs en static, que tu peux appeler de n'importe quel exercice, et tu y mets les méthodes dont tu as besoin.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut !

    Merci beaucoup pour les deux réponses, je pense que c'est clair et concis !

    Merci à toi !

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Rebonjour,

    Je pensais avoir compris et réussis et en fait je me rend compte que non, j'ai donc créé un projet, dans ce projet j'ai deux fichiers .cs

    le 1er, Pogram.cs j'ai :

    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
    using System;
     
    namespace GrosTest
    {
        class Program
        {
            static void Main(string[] args)
            {         
                int[] table = new int[] { 7, 8, 9 };
     
                DisplayArray1D(array);
     
            }//end main
     
        }//endprogram
    }
    Dans le 2ème, Class1.cs j'ai :

    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
    using System;
     
    public class Class1
    {
        public Class1()
        {
            static void DisplayArray1D(int[] array)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    Console.WriteLine(i);
                }
            }//end display
        }
     
    }
    Et je ne comprends pas ce que je dois mettre dans program.cs pour appeler la fonction de class1

    Merci d'avance et désolé d'avoir ré-ouvert le sujet !

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour
    Tu eux utiliser une "illusion d'optique" de magic face basée sur l'identité des couleurs d’arriéré
    plan et d'avant plan du class Console avant d’exécuter l'instruction ReadLine()
    Et rétablir la couleur d'avant plan par défaut pour les instructions
    ReadLine() & WriteLine() destiné à l'user.
    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
    22
     
    namespace ConsoleApplication2
    {
        class Program
        {
     
            static void Main(string[] args)
            {
                int n = 0;
                Console.ForegroundColor = ConsoleColor.Black;
                do
                {
                    if (n > 2) 
                        Console.ForegroundColor = ConsoleColor.White; 
                    string line = Console.ReadLine ();
                    Console.WriteLine(line);
                    n++;
                } while (true);
     
            }
        }
    }
    bon code...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Tout d'abord merci de ta réponse mais j'avoue que j'ai été un peu vite en posant ma question et je n'ai pas été hypee clair.

    Ma question portait sur le fait de faire appel à la méthode Display de Class1.cs dans program.cs

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 780
    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 780
    Points : 5 537
    Points
    5 537
    Par défaut
    Le code de Class1 n'est pas logique.
    Je suis même étonné que ça compile comme ça.

    Essaie de sortir ta méthode statique du constructeur (constructeur qui ne sert pas à grand chose ici) :
    Code C# : 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
    using System;
     
    public class Class1
    {
        public Class1()
        {
            // Faire des trucs ici si nécessaire.
            // PS : Ce n'est pas le cas en l'état 
        }
     
        public static void DisplayArray1D(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine(i);
            }
        }
    }

    Et ensuite, tu l'appelle de cette manière dans le code principal.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    Class1.DisplayArray1D(array);

  8. #8
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par PixelJuice Voir le message
    Ainsi tu peux te faire une petite classe du genre Tools.cs en static, que tu peux appeler de n'importe quel exercice, et tu y mets les méthodes dont tu as besoin.
    N'hésite pas aussi à user et abuser des classes d'extension.
    Ici par exemple, pour inclure la méthode GetHiddenText directement à l'objet Console plutôt que de devoir passer par un Tools.GetHiddenText() qui risque d'être mélangé avec d'autres méthodes qui n'ont rien à voir.
    https://docs.microsoft.com/fr-fr/dot...ension-methods

  9. #9
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    N'hésite pas aussi à user et abuser des classes d'extension.
    Ici par exemple, pour inclure la méthode GetHiddenText directement à l'objet Console plutôt que de devoir passer par un Tools.GetHiddenText() qui risque d'être mélangé avec d'autres méthodes qui n'ont rien à voir.
    https://docs.microsoft.com/fr-fr/dot...ension-methods
    Ton exemple est mal choisi et prête à confusion. À l'heure actuelle, les méthodes d'extension permettent d'ajouter des méthodes à l'instance d'un objet, pas d'ajouter des méthodes statiques à un type. La classe Console étant statique, tu ne peux rien faire du tout, donc mauvais exemple pour vendre des méthodes d'extension

  10. #10
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Hmpf, c'est vrai
    Bon ben désolé, j'ai rien dit.
    Mais les extensions c'est bon mangez-en quand même

Discussions similaires

  1. Connaitre les appels des méthodes
    Par digofwall dans le forum Général Java
    Réponses: 8
    Dernier message: 09/01/2012, 15h59
  2. Petites question sur les WebServices (appel et classe envoyée)
    Par Arsenic68 dans le forum Services Web
    Réponses: 0
    Dernier message: 24/12/2009, 14h54
  3. Réponses: 2
    Dernier message: 21/05/2009, 12h31
  4. Questions sur méthodes d'un objet appelant threads
    Par med365 dans le forum Général Python
    Réponses: 8
    Dernier message: 26/06/2008, 15h14
  5. Question sur les méthodes abstraites
    Par nmathon dans le forum Delphi
    Réponses: 3
    Dernier message: 15/06/2006, 20h30

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