【发布时间】:2017-04-03 02:18:42
【问题描述】:
golang 支持“延迟调用”,当使用 c++ 时,我使用这个技巧(?)。
struct DeferCall
{
DeferCall() {}
~DeferCall() { doSomeThing(); }
}
void SomeMethod()
{
DeferCall deferCall;
...
}
如何在 c# 中做到这一点?
我需要这样的golang defer tutorial
【问题讨论】:
-
defer call的目的是什么,在这里,稍后会继续发布其他操作?
-
虽然这个技巧可能有多种用途,但它在 C# 中经常使用的清理是通过显式的
IDisposable接口实现的。 -
请注意@WiktorZychla 点非常重要,在C# 中清理可能需要一个自动清理的终结器,如果用户未能显式调用Dispose 方法,因此在C# 中你可能不会在这方面做任何事情,它不再引用时会清理
-
@MrinalKamboj:你刚才说的是 C# 中没有延迟。我要说的是通常用于清理延迟的惯用方式是什么。
-
@MrinalKamboj:是的,开发人员未能调用显式的处置方法。绝不是
Tasks 和async/await在这里没有帮助。在您的答案中,您专注于语言功能,以某种方式忽略了延迟的用途。
标签: c# destructor