2016-11-26 4 views
1

J'ai essayé de refléter l'écran de sortie au fichier .txt. Par mon code ci-dessous je peux capable de refléter l'écran de sortie au fichier texte. Lors de l'exécution du obj.OutputFile("First text"); il n'y a pas de problème mais quelques fois j'ai besoin imprimer comme obj.OutputFile("Second text {0}",text);Comment passer ce paramètre?

Je suis l'exception au cours de la deuxième ligne d'exécution

Aucune surcharge pour la méthode « OutputFile » prend document de test 2 arguments

Comment effacer mon exception?

Je veux mon code qui doit être accepter un nombre différent d'arguments passant.

Mon code

class Program 
    { 

     static void Main(string[] args) 
     { 
      string text = "Sample"; 
      Program obj = new Program(); 
      obj.OutputFile("First text");    
      obj.OutputFile("Second text {0}",text);  
      Console.ReadKey();  
     } 
     public void OutputFile(string text) 
     { 

      string path = "Example.txt"; 

      if (!File.Exists(path)) 
      { 
       using (TextWriter tw = new StreamWriter(path)) 
       { 
        tw.WriteLine(text); 
        Console.WriteLine(text); 
       } 
      }  
      else if (File.Exists(path)) 
      { 
       using (TextWriter tw = new StreamWriter(path,true)) 
       { 
        tw.WriteLine(text); 
        Console.WriteLine(text); 
       } 
      } 
     }   
    } 

Je suis tout à fait nouveau à cette C#. J'espère que votre réponse sera simple.

+1

obj.OutputFile (string.Format ("Deuxième texte {0}", texte)); – ColinM

+1

Votre méthode OutputFile attend 1 paramètre. Vous lui avez donné 2 (séparés par des virgules) et le compilateur est confus. – byxor

+2

Totalement sans rapport avec votre problème, vous pouvez éviter le bloc if/else if en notant que lorsque 'File.Exists' est vrai, vous donnez' true' comme second argument de 'Streamwriter' ctor sinon (quand' File.Exists' est false) vous ne donnez rien (donc vous appelez indirectement le ctor 'Streamwriter' pour lequel ce second argument est' false') – Sehnsucht

Répondre

4

Votre appel pour OutputFile ne semble pas correct. Vous avez obj.OutputFile("Second text {0}",text); alors que la signature de la méthode est public void OutputFile(string text), ce qui signifie qu'elle nécessite un paramètre.

Tout ce que vous avez à faire est de changer votre appel à:

obj.OutputFile(string.Format("Second text {0}", text)); 

Et si vous utilisez C# 6, vous pouvez le rendre encore meilleur:

obj.OutputFile($"Second text {text}"); 
+0

Ouais c'est ses travaux! –

1

changement

obj.OutputFile("Second text {0}",text); 

à

obj.OutputFile(string.Format("Second text {0}",text)); 

EDIT:

Votre définition de fonction pour OutputFile a un paramètre. Avec la virgule entre les chaînes, vous avez deux paramètres à la place du paramètre attendu.

+0

Vous pourriez ajouter une description rapide à la fin expliquant pourquoi leur ligne de code était erronée. – byxor

+0

Merci ses travaux –