gpt4 book ai didi

c# - Functional C# - 使用或返回 Action 的

转载 作者:行者123 更新时间:2023-11-30 13:41:55 26 4
gpt4 key购买 nike

为了在 C# 中更好地处理错误而浏览网络,我总结了以下实现策略。第一个对我来说很自然,而另一个实现我不确定它的优点是什么?

1)

static void Fault(Action protectedBlock, Action faultHandler)
{
try
{
protectedBlock();
}
catch
{
faultHandler();
throw;
}<br/>
}

2)



<pre>static Action Fault(Action protectedBlock, Action faultHandler)
{
return () =>
{
try
{
protectedBlock();
}
catch
{
faultHandler();
throw;
}
};
}
</pre>

2) 是在 C# 中开发高阶函数时的首选策略吗?

而且,我想知道是否一种方法比另一种方法更有效。

最佳答案

第二种情况就像一个 Faultable Action Factory。在传递要执行的操作的委托(delegate) protectedBlock 和发生 Exception 时执行操作的委托(delegate) faultHandler 的位置。这些操作作为聚合 Action 返回,包装在 try/catch 结构中。我对这两种方法的问题是实际上没有 Exception 被捕获,所以谁将要接住你的抛出没有关于该采取什么行动的信息。

两者在执行上的区别在于它们实际执行的时间。第一个将在调用时执行。每当调用返回的 Action 时,第二个将执行。我认为效率差异不会很大。

关于c# - Functional C# - 使用或返回 Action 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4033819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com