2009-06-16 8 views
4

Cette question concerne le one I asked the other day dont j'ai obtenu de bonnes réponses utiles.Appeler une méthode avec des paramètres ref ou out à partir d'une méthode anonyme

J'avais besoin d'appeler diverses méthodes Web avec des signatures variables d'une manière générique. Je voulais être en mesure de passer la méthode web à une méthode qui avait un argument de délégué, mais je ne savais pas comment traiter les différentes signatures. La solution était d'utiliser lambdas (ou des méthodes anonymes car j'utilise C# 2 pour le moment).

Cela a bien fonctionné jusqu'à ce que j'avais besoin de ma méthode anonyme pour appeler une méthode web sans paramètres. Vous ne pouvez pas le faire pour des raisons explained here. Donc, ma question est, autre que de créer une méthode wrapper sans paramètres ref ou out pour appeler à partir de ma méthode anonyme, y at-il un moyen plus facile d'accomplir cela?

Répondre

14

En fait, vous pouvez utiliser ref et out - tout simplement pas directement avec les paramètres de la méthode d'appel; vous pouvez, cependant, simplement copier les valeurs avant et après l'appel:

static void Foo(ref string s, out int i) 
{ 
    string tmpS = s; 
    int tmpI = 0; // for definite assignment 
    DoIt(delegate { Bar(ref tmpS, out tmpI); }); 
    s = tmpS; 
    i = tmpI; 
} 
+1

Cheers mate! :) – Charlie

Questions connexes