我在XNA框架中使用ILSpy浏览了几个dll,并看到了以下内容:
class KerningHelper
{
private void !KerningHelper()
{
((IDisposable)this).Dispose();
}
}上面的感叹号是什么意思?是ILSpy的问题还是其他的问题?
注意,该类有一个单独的析构函数:private unsafe void ~KerningHelper()。
发布于 2012-04-17 09:00:35
正如注释所述,感叹号是终结器方法的C++/CLI标记。与显式释放对象时调用的传统C++析构函数(~)不同,终结器由垃圾收集器线程调用。你可以看到官方的细节这里。
我希望ILSpy将!KerningHelper()转换为~KerningHelper(),因为C++/CLI终结器等价于C#的析构函数--它是在GC到达它时发生的一种非确定性方法,与C++/CLI的显式~析构函数不同,后者是在调用delete或进行显式处置调用时调用的。
https://stackoverflow.com/questions/10187903
复制相似问题