2010-02-24 5 views
0

action ne marche pas semblent soutenir chaîne params [] comme param donc j'écritComment implémenter ce délégué?

delegate void WriteFn(string s, params string[] ls); 

j'ai cette fonction

void blah(WriteFn Write, string fmt, params string[] a) 

Maintenant, je voudrais écrire une fonction, mais je ne peux pas l'air de comprendre la syntaxe out. C'est quelque chose comme

{ 
    var sw = ... 
    blah(new WriteFn(s, ls) { sw.write(s, ls); }, fmt, a); 
    //not what i want to do but close enough. remember sw isnt a param in WriteFn 

Comment est-ce que j'écris ceci?

+1

Qu'est-ce que 'sw.write Signature de méthode de() '? –

+0

Le code à l'intérieur du {} n'a pas d'importance (prétendre qu'il est vide). Je ne peux pas obtenir le codeblock comme paramètre pour travailler. –

Répondre

2

Votre question n'est pas claire. Devons-nous supposer que sw est un StreamWriter? Si oui, il ressemble à ceci fonctionnerait:

blah((s, ls) => sw.Write(s, ls), fmt, a); 
+0

A travaillé comme un charme. Merci. –

0

Je pense que vous ne pouvez pas le faire parce que les listes d'arguments variables est pas compatible avec les méthodes anonymes, selon MSDN.

+0

la réponse acceptée ci-dessus fonctionne. –

Questions connexes