J'ai un exemple de programme, qui doit exécuter 3 méthodes dans un ordre particulier. Et après l'exécution de chaque méthode, devrait faire la gestion des erreurs. Maintenant, je l'ai fait d'une manière normale, sans utiliser des délégués comme celui-ci.Comment refactoriser ce code en utilisant l'action <t> ou Func <t> délégués
classe programme { public static void Main() {
MyTest();
}
private static bool MyTest()
{
bool result = true;
int m = 2;
int temp = 0;
try
{
temp = Function1(m);
}
catch (Exception e)
{
Console.WriteLine("Caught exception for function1" + e.Message);
result = false;
}
try
{
Function2(temp);
}
catch (Exception e)
{
Console.WriteLine("Caught exception for function2" + e.Message);
result = false;
}
try
{
Function3(temp);
}
catch (Exception e)
{
Console.WriteLine("Caught exception for function3" + e.Message);
result = false;
}
return result;
}
public static int Function1(int x)
{
Console.WriteLine("Sum is calculated");
return x + x;
}
public static int Function2(int x)
{
Console.WriteLine("Difference is calculated ");
return (x - x);
}
public static int Function3(int x)
{
return x * x;
}
}
Comme vous pouvez le voir, ce code semble laid w/tant de boucles de prises d'essai, qui sont tous font la même chose .. J'ai donc décidé que je pouvais utiliser des délégués pour refactoriser ce code afin que Try Catch puisse être tout en une méthode pour que ça soit bien. Je regardais quelques exemples en ligne et ne pouvais pas figurer notre si j'utilise les délégués d'action ou de Func pour ceci. Les deux se ressemblent, mais je suis incapable d'avoir une idée claire de la façon de l'implémenter. Toute aide est grandement appréciée. J'utilise .NET 4.0, donc im autorisé à utiliser des méthodes anonymes n expressions lambda aussi pour cette
Merci
Bonne réponse (comme Joël), mais je ne nommerai pas un tableau de 'Func <>' s comme "actions", car cela implique un tableau de 'Action <>' s , ce qui peut être un peu déroutant, en particulier pour ceux qui sont encore un peu flou sur la différence entre les deux. J'utiliserais "funcs" ou "functions". @ user330612: La différence est que 'Func <>' renvoie une valeur alors que 'Action <>' ne l'est pas. –
pourriez-vous regarder ma réponse et voir si je peux utiliser func <> pour simplifier davantage cela? j'ai undstd le diff bw prédicat, action et func maintenant :) thnx – user330612