我正在使用ILSpy在 XNA 框架中查找一些 dll并遇到了这个问题:
class KerningHelper
{
private void !KerningHelper()
{
((IDisposable)this).Dispose();
}
}
上面的感叹号是什么意思?这是 ILSpy 的问题,还是其他问题?
请注意,该类有一个单独的析构函数:private unsafe void ~KerningHelper()
.
我正在使用ILSpy在 XNA 框架中查找一些 dll并遇到了这个问题:
class KerningHelper
{
private void !KerningHelper()
{
((IDisposable)this).Dispose();
}
}
上面的感叹号是什么意思?这是 ILSpy 的问题,还是其他问题?
请注意,该类有一个单独的析构函数:private unsafe void ~KerningHelper()
.
正如评论所述,感叹号是终结器方法的 C++/CLI 标记。与显式处理对象时调用的传统 C++ 析构函数 (~) 不同,终结器由垃圾收集器线程调用。您可以在此处查看官方详细信息。
我希望 ILSpy 将 to 转换!KerningHelper()
为~KerningHelper()
,因为 C++/CLI 终结器等效于 C# 的析构函数 - 这是一种在 GC 到达它时发生的非确定性方法,与 C++/CLI 的显式 ~destructor 不同,它在您调用delete
或调用时调用进行了显式的 Dispose 调用。