在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()是什么意思?请指教,谢谢 :)
{
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()是什么意思?请指教,谢谢 :)
你是看书上的吧,呵呵
GC.SuppressFinalize(this);
后就不要去执行析构了
程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。垃圾回收器检查是否存在应用程序不再使用的对象。如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。程序退出时也会调用析构函数。可以通过调用 Collect 强制进行垃圾回收,但大多数情况下应避免这样做,因为这样会导致性能问题。有关更多信息,
通常,与运行时不进行垃圾回收的编程语言相比,C# 无需太多的内存管理。这是因为 .NET Framework 垃圾回收器会隐式地管理对象的内存分配和释放。但是,当应用程序封装窗口、文件和网络连接这类非托管资源时,应当使用析构函数释放这些资源。当对象符合析构时,垃圾回收器将运行对象的 Finalize 方法。