奇怪的构造函数

时间:2010-03-06 05:46:33

标签: c#

做什么。这是我刚刚继承的Asp.Net v2类。班级工作正常 这是一个默认的构造函数 在它下面是~VNC用于什么?

using System;
using System.Web;
using System.Data;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data.SqlClient;
using System.Configuration;

namespace UtopianClasses
{
    public class VNC
    {
        public VNC(){ }

        ~VNC() {
             GC.Collect();
        }

        public String VNCViewFilesLocationMCR
        {
            get {
              return  ConfigurationManager.AppSettings["VNCViewFilesLocation"].ToString();    
            }

......其他课程

3 个答案:

答案 0 :(得分:3)

如前所述,它是一个析构函数。但是,您不仅可能不是显式实现析构函数,而且真的不应该在析构函数内部强制执行GC集合,因为析构函数是由垃圾收集器本身调用的。就像我所知,这是任何GC语言中的代码味道。

答案 1 :(得分:1)

这是destructor,而不是构造函数。它们通常用于在包装本机API的类中释放本机资源或句柄。

话虽如此,添加一个调用GC.Collect()的构造函数是个坏主意。析构函数仅在最终化期间调用,因此垃圾收集器已经清理此对象以及此对象引用的任何对象。没有理由这样做,因为它只会增加开销,实际上会减慢系统速度。

这可能是由具有C ++背景的人编写的,他不了解.NET中内存管理的复杂性。我建议完全删除它。

答案 2 :(得分:0)

他们实际上在.net中被称为终结者。当GC清理该对象时,它们会被调用。

http://msdn.microsoft.com/en-us/library/system.object.finalize(VS.71).aspx