波浪号(〜)字符在这里做什么

Tom*_*Tom 7 c# tilde

可能重复:
波形符(〜)在C#中的含义是什么?

class ResourceWrapper
{
    int handle = 0;
    public ResourceWrapper()
    {
        handle = GetWindowsResource();
    }
    ~ResourceWrapper()                     //this line here
    {
        FreeWindowsResource(handle);
        handle = 0;
    }
    [DllImport("dll.dll")]
    static extern int GetWindowsResource();
    [DllImport("dll.dll")]
    static extern void FreeWindowsResource(int handle);
}
Run Code Online (Sandbox Code Playgroud)

波浪号在指示的线上做了什么.

我认为它是按位NOT运算符,事实上我并不真正理解那里的整个块,(注释行和后面的括号blovk),它不是一个方法,或一个参数或任何东西,它是什么为什么之前有波浪号呢?

Jos*_*ved 10

那是析构函数.注意所有资源都是在垃圾回收时释放的.

  • 实际上,yshuditelu是错误的,`~ClassName` _is_终结器(即`Object.Finalize()`) - 如果你使用`ildasm`来查看`~ClassName`被编译成什么,你会看到它变为`覆盖Finalize`.特殊名称的原因是,与简单的覆盖相比,有一点魔力--C#编译器总是插入对`base.Finalize()`的调用. (3认同)