ILSpy中显示奇数类成员语法

Geo*_*ett 7 c# syntax destructor ilspy

我正在使用ILSpy探索 XNA框架中的几个dll,并遇到了这个问题:

class KerningHelper
{
    private void !KerningHelper()
    {
        ((IDisposable)this).Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的感叹号是什么?这是ILSpy或其他问题吗?

注意,该类有一个单独的析构函数:private unsafe void ~KerningHelper().

Avn*_*tan 6

正如评论所述,感叹号是终结器方法的C++/CLI标记.与显式处理对象时调用的传统C++析构函数(〜)不同,终结器由垃圾收集器线程调用.您可以在此处查看官方详细信息.

我希望ILSpy能够转换!KerningHelper()~KerningHelper(),因为C++/CLI终结器等同于C#的析构函数 - 它是一个非确定性的方法,当GC到达它时发生,不像C++/CLI的显式〜析构函数,当你调用delete或调用时进行显式的Dispose调用.