2009-10-19 5 views
3

Ce que j'essaie de faire est d'écrire une méthode dédiée pour mon instance StreamWriter, plutôt que de l'utiliser à des points aléatoires dans le programme. Ceci localise les endroits où la classe est appelée, car il y a quelques bugs avec la façon actuelle de le faire.Existe-t-il un moyen plus simple de passer un groupe de variables en tant que tableau?

Voici ce que j'ai en ce moment:

public static void Write(string[] stringsToWrite) { 

    writer = new StreamWriter(stream); 

    writer.Write("hello"); 

    foreach (string stringToWrite in stringsToWrite) { 
     writer.Write(" " + stringToWrite + " "); 
    } 

    writer.Flush(); 
} 

Note: flux est une instance d'un TcpClient

Avec cela, je suis en mesure de fournir un tableau de variables à écrire, mais je ne peut pas utiliser les mêmes appels de méthode que la méthode existante:

writer.WriteLine("hello {0} {1} {2}", variable1, variable2, variable 3); 
writer.Flush(); 

ce serait génial si je pouvais passer x nombre de variables à la méthode et de la boucle d'écrire chacun d'entre eux dans cette f Cependant, les paramètres optionnels dans .NET n'arrivent pas avant la v4.0 qui est encore en beta.

Des idées?

Répondre

8

Vous pouvez jeter un oeil à la params keyword:

public static void Write(params string[] stringsToWrite) { 
    ...  

    foreach (string stringToWrite in stringsToWrite) { 
     writer.Write(" " + stringToWrite + " "); 
    } 

    ... 
} 

utilisation serait exactement ce que vous voulez, puis.

2

Utilisation params:

public static void Write(params string[] stringsToWrite) { 
    ... // your code here 
} 

appel comme Write(a, b, c), ce qui équivaudrait à Write(new string[] {a, b, c}).

1

Utilisez un tableau de paramètres!

public void Write(params string[] oStrings) 
{ 
} 
3

Utilisez le mot-clé params sur votre méthode:

public static void Write(params string[] stringsToWrite) { 

alors vous pouvez dire

Write("Hello", "There") 

Vous pouvez toujours passer dans un tableau ordinaire, autant que WriteLine accepterait un.

3

params (déjà mentionné) est la réponse évidente dans la plupart des cas. Notez que vous pouvez également envisager d'autres solutions, par exemple:

static void Main() { 
    string s = Format("You are {age} years old and your last name is {name} ", 
     new {age = 18, name = "Foo"}); 
} 

Comme le montre here et discuté plus here.

+0

+1. Celui-là se lit vraiment bien. – Joey

Questions connexes