2009-11-12 4 views
0

Je construis un programme qui utilise une fonction générique WriteAllLines:Argument non valide lors de l'utilisation Tableau chaîne

private static void WriteAllLines(string file, string[] contents) 
{ 
    using (StreamWriter writer = new StreamWriter(file)) 
    { 
     foreach (string line in contents) 
     { 
      writer.Write(line); 
     } 
    } 
} 

Mais le problème est que quand je l'utilise comme ceci:

string temp = Path.GetTempFileName(); 
string file = ReadAllText(inputFile); 
WriteAllLines(temp, value); 

Je sais pourquoi ce problème se produit, c'est parce que value est une chaîne et je le mets à la place d'un tableau de chaînes (string[]), mais comment puis-je changer mon code pour résoudre ce problème? Merci.

+0

Quel est le problème avec File.WriteAllLines? http://msdn.microsoft.com/fr-fr/library/system.io.file.writealllines.aspx –

+0

Non, ce n'est pas, c'est une autre fonction générique. ;) –

Répondre

3

Deux options; params, ou tout simplement new[] {value}

Signification:

WriteAllLines(string file, params string[] contents) {...} 

ou

WriteAllLines(temp, new[] {value}); 

ou (C# 2,0)

WriteAllLines(temp, new string[] {value}); 

Veuillez noter que tous font exactement la même chose en termes de création tableaux, etc. La dernière option consiste à créer une surcharge plus spécifique:

WriteAllLines(string file, string contents) {...} 
1

pourquoi ne pas vous méthode WriteAllText dans la classe de fichier ..

using System; 
using System.IO; 
using System.Text; 

class Test 
{ 
    public static void Main() 
    { 
     string path = @"c:\temp\MyTest.txt"; 

     // This text is added only once to the file. 
     if (!File.Exists(path)) 
     { 
      // Create a file to write to. 
      string createText = "Hello and Welcome" + Environment.NewLine; 
      File.WriteAllText(path, createText); 
     } 

     // This text is always added, making the file longer over time 
     // if it is not deleted. 
     string appendText = "This is extra text" + Environment.NewLine; 
     File.AppendAllText(path, appendText); 

     // Open the file to read from. 
     string readText = File.ReadAllText(path); 
     Console.WriteLine(readText); 
    } 
}