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

 .NET Discussion :

utilisation de out pour un paramètre de méthode [C#]


Sujet :

.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut utilisation de out pour un paramètre de méthode
    Bonjour,

    Je viens vers vous car je galère depuis un bout de temps sur un bout de code. En bref, je cherche à réaliser un prog qui pourrait permettre à un client de s'identifier avec un cardNumber puis de taper un secretCode et enfin de passer un virement avec un amount.

    J'ai déjà codé plein de trucs. Pas mal pour moi! mais ya des erreurs

    Voici ma main:
    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
    class MainGestion
        {
            static void Main(string[] args)
            {
                BankContext bankContext = BankFactory.createContext();
     
                Console.WriteLine("Tapez votre numéro de carte :");
                int cardNumberTyped = Carte(out cardNumberTyped);
                Console.WriteLine("Tapez votre code secret :");
                int secretCodeTyped = Code(out secretCodeTyped); 
                Console.WriteLine("Tapez le montant de l'opération"); 
                int amountTyped = Transaction(out amountTyped);
     
                int i = 0;
                bool codeNonTrouve = true;
                while (i<3 && codeNonTrouve) 
                {
                    try {
                    Connexion(bankContext);
     
                        //daily  
                        if (ClientKnowsCode(cardNumberTyped,secretCodeTyped,bankContext) == true)
                        {
                            //CreditCard.daily.balance = ;
                            codeNonTrouve = false;
                        }

    Voila ici un exemple de ma méthode pour récupérer ce que l'utilisateur écrit au clavier pour s'identifier avec son num de carte et son code puis taper le montant du virement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    static int Carte(out int cardNumberTyped)
            {
                Console.WriteLine("Tapez le numéro de la carte :");
                cardNumberTyped = int.Parse(Console.ReadLine()); 
                return cardNumberTyped; 
            }
    Enfin, mes 2 méthodes appelées dans la main qui travaille pour de bon:
    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
    static void Connexion(BankContext bankContext)
            {
                if (ClientKnowsCode(cardNumberTyped, secretCodeTyped, bankContext))
                    Console.WriteLine("Connexion acceptée");
                else
                    Console.WriteLine("Connexion refusée");
            }
     
     
            static bool ClientKnowsCode(int cardNumberTyped, int secretCodeTyped, BankContext bankContext)
            {
                if (CreditCardExist(cardNumberTyped, bankContext) && SecretCodeMatchCardNumber(cardNumberTyped, secretCodeTyped, bankContext))
                    return true;
                else
                    return false;
            }
    Mon gros souci, c'est que dans les paramètres de la méthode Connexion, l'ordi reconnait secretCodeTyped et bankContext (qui est la où je stocke mes listes de clients) mais pas cardNumberTyped ... Le fameux "does not exist in the current context"!

    Quelqu'un peut me filer un coup de main et m'expliquer?

    Merci d'avance!

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    je pense que tu as utilisé le out pour récupérer ton cardtyped mais t'en as pas besoin ici, utiliser un out est utile quand tu veux qu'une fonction te renvoie 2 paramètres différents:
    le int que tu déclares spécifie que ta fonction te retourne un int déjà donc pas besoin en plus de faire out ...
    tu as justes à faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    static int Carte()
            {
                int cardNumberTyped=0;
                Console.WriteLine("Tapez le numéro de la carte :");
                cardNumberTyped = int.Parse(Console.ReadLine()); 
                return cardNumberTyped; 
            }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    D'accord! Et merci youtpout978 !

    Néanmois, j'ai toujours la même erreur lorsque dans la méthode Connexion, j'appelle la méthode ClientKnowsCode et que je passe le cardNumberTyped et le secretCodeTyped en paramètre, il reconnait secretCodeTyped (MainGestion2.secretCodeTyped lorsque je passe la souris dessus) mais pas cardNumberTyped qui n'existe pas ds le current context.

    Pourtant j'ai fait exactement la même chose pour les 2:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    class MainGestion2
        {
            static void Main(string[] args)
            {
                BankContext bankContext = BankFactory.createContext();
     
                Console.WriteLine("Tapez votre numéro de carte :");
                int cardNumberTyped = Carte();
                Console.WriteLine("Tapez votre code secret :");
                int secretCodeTyped = Code(); 
                Console.WriteLine("Tapez le montant de l'opération"); 
                int amountTyped = Transaction();
     
                int i = 0;
                bool codeNonTrouve = true;
                while (i<3 && codeNonTrouve) 
                {
                    try {
                    Connexion();
     
                        //daily  
                        if (ClientKnowsCode(cardNumberTyped,secretCodeTyped,bankContext) == true)
                        {
                            //CreditCard.daily.balance = ;
                            codeNonTrouve = false;
                        }
     
     
                        catch (MauvaisCode e)
                        {
                            Console.WriteLine ("Essayez encore");
                            i++;
                        }
                        // rattacher i au exception.   
     
                        Console.WriteLine ("Essayez encore");
     
                        if (int i>3)
                        {
                        Console.WriteLine ("Carte non valable");
                        }
                    }
     
                }
            }
     
     
            static int Carte()
            {
                int cardNumberTyped = 0;
                Console.WriteLine("Tapez le numéro de la carte :");
                cardNumberTyped = int.Parse(Console.ReadLine());
                return cardNumberTyped;
            }
     
     
            static int Code()
            {
                int secretCodeTyped = 0;
                Console.WriteLine("Tapez le code secret de la carte :");
                secretCodeTyped = int.Parse(Console.ReadLine()); 
                return secretCodeTyped; 
            }
     
     
            static int Transaction()
            {
                int amountTyped = 0;
                Console.WriteLine("Tapez le montant de la transaction :");
                amountTyped = int.Parse(Console.ReadLine());
                return amountTyped;
            }
     
     
            static void Connexion()
            {
                if (ClientKnowsCode(cardNumberTyped, secretCodeTyped))
                    Console.WriteLine("Connexion acceptée");
                else
                    Console.WriteLine("Connexion refusée");
            }
    Merci d'avance!

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    il y a quelques erreurs dans ton code tu as oublié des accolades:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Console.WriteLine("Tapez votre numéro de carte :");
                int cardNumberTyped = Carte();
                Console.WriteLine("Tapez votre code secret :");
                int secretCodeTyped = Code();
                Console.WriteLine("Tapez le montant de l'opération");
                int amountTyped = Transaction();
     
                int i = 0;
                bool codeNonTrouve = true;
                while (i < 3 && codeNonTrouve)
                {
                    try
                    {
                        Connexion();
     
                        //daily  
                        if (ClientKnowsCode(cardNumberTyped, secretCodeTyped, bankContext) == true)
                        {
                            //CreditCard.daily.balance = ;
                            codeNonTrouve = false;
                        }
     
                    }
                    catch (MauvaisCode e)
                    {
                        Console.WriteLine("Essayez encore");
                        i++;
                    }
                    // rattacher i au exception.   
     
                    Console.WriteLine("Essayez encore");
     
                    if (i > 3)
                    {
                        Console.WriteLine("Carte non valable");
                    }
                }
    si tu veux tu peux déclarer une seul fonction pour ton numéro de code et de carte comme ils font la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    static int CarteOuCode()
            {
                int numberTyped=0;
                numberTyped = int.Parse(Console.ReadLine()); 
                return numberTyped; 
            }
    et tu appel cette fonction dans les deux cas

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

Discussions similaires

  1. utilisation api shell pour lancer un programme en passant des paramètres
    Par criche dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 19/05/2012, 09h37
  2. Réponses: 1
    Dernier message: 13/09/2009, 23h51
  3. Réponses: 1
    Dernier message: 27/11/2008, 10h55
  4. Réponses: 2
    Dernier message: 03/07/2008, 11h09
  5. Utiliser des variables statiques pour des paramètres
    Par el_slapper dans le forum VB.NET
    Réponses: 4
    Dernier message: 11/03/2008, 08h55

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