什么是析构函数,它有什么意义

浮尘1213 2009-09-29 09:43:32
什么叫做析构函数,它有什么意义和要求
...全文
264 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
狼王_ 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xuefeng128 的回复:]
析构函数是构造函数的反过程,就是在对象的生命周期完结之后释放的过程
由.NET自动控制,我们不用管
[/Quote]
析构函数的用处不太大
xuefeng128 2009-09-29
  • 打赏
  • 举报
回复
析构函数是构造函数的反过程,就是在对象的生命周期完结之后释放的过程
由.NET自动控制,我们不用管
wartim 2009-09-29
  • 打赏
  • 举报
回复
配合GC.SuppressFinalize我能想到一个可能有用的地方是外部可以有选择地决定一个类的实例在销毁的时候要不要额外处理点什么或是不处理点什么
wartim 2009-09-29
  • 打赏
  • 举报
回复
是没什么意义,还可以再通知下垃圾回收不要调用析构
using (X x = new X())
{
GC.SuppressFinalize(x);
}
鸭梨山大帝 2009-09-29
  • 打赏
  • 举报
回复
这个还真没太大意义,即使不做操作,也会被回收
(链接数据库之类等动作除外,因为已经跳出了GC回收的范围,它管不到这个)

[Quote=引用 5 楼 wartim 的回复:]
C# codeusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Collections;namespace WindowsFormsApplication13
{publicpartialclass Form1 : Form
{class X : IDisposable
{~X()
{
MessageBox.Show("类被回收...");
}publicvoid Dispose()
{
}
}public Form1()
{
InitializeComponent();using (X x=new X())
{
}
}

}
}

类离开using块后没有真正销毁,直到关闭窗口程序退出回收时才执行了
MessageBox.Show("类被回收...");

[/Quote]
wartim 2009-09-29
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace WindowsFormsApplication13
{
public partial class Form1 : Form
{
class X : IDisposable
{
~X()
{
MessageBox.Show("类被回收...");
}


public void Dispose()
{
}
}

public Form1()
{
InitializeComponent();

using (X x = new X())
{
}
}

}
}


类离开using块后没有真正销毁,直到关闭窗口程序退出回收时才执行了
MessageBox.Show("类被回收...");
V68V6 2009-09-29
  • 打赏
  • 举报
回复
自己会加,释放资源。
你不用管
qingyun27sc 2009-09-29
  • 打赏
  • 举报
回复
同意一楼,那是C++中的解释。
vrhero 2009-09-29
  • 打赏
  • 举报
回复
析构函数在.NET中形同鸡肋...一般不需要,也不建议用...
huming_h 2009-09-29
  • 打赏
  • 举报
回复
析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

--来自百度知道

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧