在C#的类中有这样一个写法,假如:public class DataAccessCenter
{
  OracleConnection _conn = null;
  private static readonly string = System.Configuration.ConfigurationSettings.AppSetting["connString"];
  public DataAccessCenter()
  {
  }
  public void Dispose()
  {
     Dispose(true);
     GC.SuppressFinalize(this);
  }
  protected virtual void Dispose(bool isDisposing)
  {
     if(!isDisposing)
       return;
     if(conn.State != ConnectionState.Closed)
       conn.Close();
  }
  ~DataAccessCenter()
  {
     Dispose();
  }
}请问:~DataAccessCenter()是什么意思?请指教,谢谢 :)

解决方案 »

  1.   

    是个析构函数
    你是看书上的吧,呵呵
    GC.SuppressFinalize(this);
    后就不要去执行析构了
      

  2.   

    析构函数用于析构类的实例。不能在结构中定义析构函数。只能对类使用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰符,也没有参数。不应使用空析构函数。如果类包含析构函数,Finalize 队列中则会创建一个项。调用析构函数时,将调用垃圾回收器来处理该队列。如果析构函数为空,则只会导致不必要的性能丢失。
     程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。垃圾回收器检查是否存在应用程序不再使用的对象。如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。程序退出时也会调用析构函数。可以通过调用 Collect 强制进行垃圾回收,但大多数情况下应避免这样做,因为这样会导致性能问题。有关更多信息,
    通常,与运行时不进行垃圾回收的编程语言相比,C# 无需太多的内存管理。这是因为 .NET Framework 垃圾回收器会隐式地管理对象的内存分配和释放。但是,当应用程序封装窗口、文件和网络连接这类非托管资源时,应当使用析构函数释放这些资源。当对象符合析构时,垃圾回收器将运行对象的 Finalize 方法。