我有一個示例程序,它需要執行3個特定順序的方法。 並執行每個方法後,應該做錯誤處理。現在我以正常的方式做到了這一點,無需使用這樣的代表。我如何重構此代碼通過使用動作<t>或Func <t>代表
類節目 { 公共靜態無效的主要(){
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;
}
}
正如你所看到的,這個代碼看起來醜陋瓦特/這麼多的嘗試捕捉循環,這些都做同樣的事情.. 。因此,我決定我可以使用委託來重構此代碼,以便Try Catch可以全部推入一種方法,使其看起來整潔。我正在看一些在線的例子,如果我不喜歡使用Action或Func代表來做這個事情,我們可能會想到。兩者看起來都很相似,但我無法弄清楚如何實現這一點。任何幫助grglyly讚賞。我使用.NET 4.0,所以即時通訊允許使用匿名方法ňlambda表達式也爲這個
感謝
很好的回答(這是喬爾的),但我不會命名的數組'Func <>''s作爲「actions」,因爲這意味着一個'Action <>'的數組,這可能有點令人困惑,特別是那些對兩者之間的差異仍然有點模糊的人。我會用「funcs」或「functions」。 @ user330612:不同之處在於'Func <>'返回一個值,而'Action <>'沒有。 – 2010-05-02 09:53:23
你可以看看我的回覆,看看我是否可以使用func <>來進一步簡化嗎?我現在發佈diff bw謂詞,動作和func :) thnx – user330612 2010-05-02 21:11:45