gpt4 book ai didi

c#-4.0 - C#用void return写Func的方法

转载 作者:行者123 更新时间:2023-12-04 11:41:53 24 4
gpt4 key购买 nike

我有以下两个功能,几乎相同,唯一的区别是一个使用func ,其他 action .如果可能的话,我想将它们合并为一个功能。

    private static void TryCatch(Action action)
{
try
{
action();
}
catch (Exception x)
{
Emailer.LogError(x);
throw;
}
}

private static TResult TryCatch<TResult>(Func<TResult> func)
{
try
{
return func();
}
catch (Exception x)
{
Emailer.LogError(x);
throw;
}
}

最佳答案

你可以用你的第二个,Func<T>版本,实现 Action方法只是将 Action 包装在 lambda 中。这消除了一些重复的代码。

private static void TryCatch(Action action)
{
Func<object> fun =>
{
action();
return null;
};
TryCatch(fun);
}

话虽如此,这样做会产生额外的开销,因此就我个人而言,我可能会按照您目前的实现方式保留它(特别是考虑到您的原始版本在这种情况下恰好是多么简短和简单)。

关于c#-4.0 - C#用void return写Func的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884621/

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