0

In this example link ....

https://stackoverflow.com/a/19737565/2948523

I found some sections like, ~ImprovedClass() ~Inner()

Please help me out what are they ? why and how should I use them in code

            class Inner
            {
                public Inner(IntPtr unkOuter)
                {
                }

                ~Inner()
                {
                }
            }

        public class ImprovedClass 
        {
            // constructor
            public ImprovedClass()
            {
            }

            ~ImprovedClass()
            {
            }
        }
4

3 回答 3

3

这是一个析构函数

它们用于释放对象可能仍然持有的资源,即使它不再使用。

于 2013-11-05T11:52:31.333 回答
2

这些被称为析构函数,它们在实例的类实例生命结束时自动调用。您可以在这里编写代码来释放您的对象已使用的一些资源。以下是关于析构函数的一些说明:

  1. 析构函数不能在结构中定义。
  2. 它们仅与类一起使用。
  3. 一个类只能有一个析构函数
  4. 析构函数不能被继承或重载。
  5. 不能调用析构函数。它们被自动调用。

这是一些指南 http://msdn.microsoft.com/en-us/library/vstudio/66x5fx1b.aspx

于 2013-11-05T12:03:11.853 回答
0

~ 标记用于析构函数而不是构造函数。

当您使用非托管资源(例如句柄和数据库连接)时,您应该确保它们被持有的时间最短,使用延迟获取和早期释放的原则。在 C++ 中,资源的释放通常在析构函数中完成,该析构函数确定性地在对象被删除的位置运行。然而,.NET 运行时使用垃圾收集器 (GC) 来清理和回收不再可访问的对象使用的内存;由于这是定期运行的,这意味着清理对象的点是不确定的。这样做的结果是托管对象不存在析构函数,因为没有确定的位置来运行它们。

于 2013-11-05T12:12:30.933 回答