C# Action<T>, de Passer de la fonction en tant que paramètre
Je veux passer une condition que l'Action pour une autre méthode. Première ligne dans "ComputerPriceGenerator" œuvres", mais comment faire pour que le tableau de travail (deuxième ligne)?.. Toutes les idées
Je suis à la recherche de conseils..., CalculateAllPrice n'est pas conçu encore
public void ComputerPriceGenerator()
{
//Below line Works
PriceMachine.CalculatePrice(cart.Computers[0],() => ComputerConverter(cart.Computers[0]));
//How to make this work, i don't want to loop it???
PriceMachine.CalculateAllPrice(cart.Computers,() => ComputerConverter(??));
}
public void ComputerConverter(Computer comp)
{
if (comp.Memory <= 2)
comp.Discount = 10;
}
Votre code aurait été un candidat idéal pour l'utilisation de LINQ, cependant, il est plein d'effets secondaires. J'avais envisager de refactoring.
Sans montrer les signatures de CalculatePrice et CalculateAllPrice il est difficile de savoir comment vous aider.
Skeet: Il me semblait qu'il était partie à la recherche pour obtenir des conseils sur ce que la signature de
Morgan... je suis à la recherche de conseils..., CalculateAllPrice n'est pas encore conçu, mais pour CalculatePrice il prend type d'Action CalculatePrice(Ordinateur comp, Action myAction)
Sans montrer les signatures de CalculatePrice et CalculateAllPrice il est difficile de savoir comment vous aider.
Skeet: Il me semblait qu'il était partie à la recherche pour obtenir des conseils sur ce que la signature de
CalculateAllPrice
devrait être. Je peux me tromper, cependant.Morgan... je suis à la recherche de conseils..., CalculateAllPrice n'est pas encore conçu, mais pour CalculatePrice il prend type d'Action CalculatePrice(Ordinateur comp, Action myAction)
OriginalL'auteur kayak | 2011-01-31
Vous devez vous connecter pour publier un commentaire.
Votre
CalculatePrice
méthode ne devrait pas prendre justeAction
, OMI - les deux méthodes doivent prendreAction<Computer>
. Je voudrais donc avoir des méthodes comme ceci:et de les appeler comme ceci:
Jon, j'ai une question, non résolue(cette question n'est pas liée à celui-ci, je vais supprimer ce) .., Laissez-moi savoir si vous avez des suggestions, " stackoverflow.com/questions/4444972/... "
Les réponses dire à peu près ce que je voudrais. Vous avez presque certainement ne voulez pas aller en bas de la route.
Merci @Jon SKeet
Jon, est votre deuxième méthode, un exemple d'une monade? J'ai essayé d'envelopper ma tête autour de ce qu'ils sont et comment les utiliser.
OriginalL'auteur Jon Skeet
Que vous souhaitez appliquer la méthode à tous les éléments du tableau, vous n'obtiendrez pas autour d'une itération sur elle.
Vous pouvez définir
PriceMachine.CalculateAllPrice
en tant que tel:OriginalL'auteur Femaref
Puis faire
CalculateAllPrice
itérercart.Computers
et passer de l'un à la fonction anonyme.(cart.Computers, (Computer x) => ComputerConverter(x))
est le même que(cart.Computers, ComputerConverter)
.Bien sûr, j'étais juste garder avec le lambda de style, il a posté.
OriginalL'auteur Justin Morgan