我正在使用ILSpy在XNA框架内探索几个dll并遇到了这个问题:
class KerningHelper
{
private void !KerningHelper()
{
((IDisposable)this).Dispose();
}
}
上面的感叹号是什么?这是ILSpy或其他什么问题吗?
注意,该类有一个单独的析构函数:private unsafe void ~KerningHelper()
。
答案 0 :(得分:6)
正如评论所述,感叹号是终结器方法的C ++ / CLI标记。与显式处理对象时调用的传统C ++析构函数(〜)不同,终结器由垃圾收集器线程调用。您可以查看官方详细信息here。
我希望ILSpy能够将!KerningHelper()
翻译成~KerningHelper()
,因为C ++ / CLI终结器等同于C#的析构函数 - 这是一种非确定性方法,当GC到达它时会发生,与C ++不同/ CLI的显式~destructor,在您调用delete
或显式Dispose调用时调用。