10
votes

C #: convertir une collection en paramètres []

Voici une simplification de mon code: xxx

string.format nécessite les arguments envoyés sous forme paramètres . Y a-t-il une manière que je puisse convertir la collection args en paramètres pour la méthode string.format


4 commentaires

Vous n'avez pas spécifié le type de Args. Devrait être paramiques string [] args . Outre cela, vous pouvez simplement le transmettre comme une matrice normale. Params est juste un mot-clé compilateur qui construit un tableau à partir des paramètres envoyés.


@Hubeza: il a spécifié le type: il est objet . Pourquoi devrait-il se limiter aux paramètres de chaîne?


@Chris, quelque chose n'allait pas soit avec mon navigateur ou mes yeux. Je peux jurer que c'était void foo (paramètres args []) . J'ai besoin de vacances :)


@Hubeza Hehe, rien ne va mal avec toi, j'ai commis une erreur au début, puis je l'ai corrigé en édité la question :) Mais prendre des vacances est toujours une bonne idée :)


3 Réponses :


4
votes

transmettez-les sous la forme d'un seul argument: xxx


0 commentaires

13
votes

Le mot clé est uniquement Syntaxtic Sugar qui vous permet d'appeler une telle méthode avec n'importe quel nombre d'arguments. Toutefois, ces arguments sont toujours transmis à la méthode comme une matrice.

Cela signifie que foo (123, "bonjour", datetétime.now) est équivalent à FOO (nouvel objet [ ] {123, "bonjour", datetime.now}) .

Vous pouvez donc transmettre les arguments de foo directement sur string.format Comme ceci: xxx

Cependant, dans ce cas particulier, vous demandez trois arguments (car vous avez {0}, {1} et {2} dans votre format) . Par conséquent, vous devriez changer votre code à: xxx

... ou faire comme marcelo suggéré.


0 commentaires

0
votes

Vous pouvez essayer d'utiliser objet.getType (), par exemple xxx


1 commentaires

Cela n'a rien à voir avec ce que j'ai demandé, mais merci d'avoir essayé. Au fait, il n'est pas nécessaire de comparer les noms de type, vous pouvez simplement vérifier si (arg est DateTime) etc.