可能的重复:
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);
}

所指示的行上的波形符有什么作用。

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

有帮助吗?

解决方案

也就是说。它需要照顾所有的资源都在垃圾收集释放。

其他提示

此实现类的终结(Finalize方法)。 通常情况下,你不应该实现一个终结。

E.g。这样做对于保持外部非托管资源类,但一定要落实在这种情况下IDisposable模式了。

像C ++,~ClassName是析构函数方法。当有问题的对象被通过垃圾收集清理它被调用在C#。不像在C ++其中存在时调用析构函数确定性倍,没有预测何时其将被称为(或者即使它会被称为)在C#的方式。

什么你可能寻找的是IDisposable模式,它提供了一个更好的方法了这一点。

这是一个析构。它可以让你释放资源的隐性控制。即,它是由垃圾收集。如果您想对资源的释放明确的控制,可以实现的 IDisposable的请查看实施最后确定并处置以清理非托管资源的。的框架设计准则还具有更多的信息。

确认,我只是找到了答案并不能看到如何删除我的问题。它指定了该类的析构函数

我对 C# 一无所知,但从代码的作用来看,这看起来像一个解构函数,说

  1. 释放引用的资源 handle
  2. handle0 为了确定

也会与“不”的概念结合在一起......:)

不过我可能是错的...

格雷茨

后退2dos

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top