社区
C#
帖子详情
析构函数有什么用?
limengchen
2006-08-17 10:34:35
按照从多个地方看到的说法,C#中的析构函数在对象被销毁时不一定会被调用。那这样的析构函数还有什么用呢?谁会把代码放在一个说不清楚会不会被执行的地方?
...全文
307
17
打赏
收藏
析构函数有什么用?
按照从多个地方看到的说法,C#中的析构函数在对象被销毁时不一定会被调用。那这样的析构函数还有什么用呢?谁会把代码放在一个说不清楚会不会被执行的地方?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
limengchen
2006-09-14
打赏
举报
回复
不是该不该用的问题,是我的dataAdapter.Update(dataTable)该怎么执行的问题...
lincats
2006-09-14
打赏
举报
回复
楼主研究下堆,堆战,拖管堆之类的概念。还有GC啊,之类的东东就懂了。何时该用何时可以不用。
tshark
2006-09-14
打赏
举报
回复
析构还是有用的,当系统不能自动释放的时候,例如非托管就需要手动释放.当然,很多情况下客户会说哎呀我的机器慢了,我们就对他们说,没事,重启一下就好了.就这样.
chaircat
2006-09-13
打赏
举报
回复
MSDN有讲...还有IDispose接口...
有些资源CLR是不知道怎么去释放要你手动释放的时候你要写在析构函数或Dispose()方法里面...
比如你申请了一块非托管内存...
江城老温
2006-09-13
打赏
举报
回复
析构函数可以给你自己调用,提前释放资源.
sswwee
2006-09-13
打赏
举报
回复
干吗非要老想析构呢又不是c++
limengchen
2006-09-13
打赏
举报
回复
IDisposal我试过,在里面dataAdapter.Update(dataTable)时,dataTable已经变为not initialized了,根本没法update
xiaoliangwh
2006-09-12
打赏
举报
回复
jf
limengchen
2006-09-12
打赏
举报
回复
那我的StreamWriter.Close()在哪调用啊?不调用的话文件都写不完整。
snwyq
2006-08-28
打赏
举报
回复
地區:北京
年限:2年
技術:.Net BS开发
工資:avg>>5K + 福利,几乎不加班,工作开心,心情愉快。
公司性質:汽车门户网站。
PS: 透露点消息,我们公司正在招.net BS开发人员,如果哪位同仁想换工作,是一个不错的机会选择,加richard_wung@hotmail.com 说应聘即可!
sswwee
2006-08-28
打赏
举报
回复
c++析构有用c#就没什么问题了,c#不用担心内存释放的问题,这就是新一代语言(java c#)区别于c++的优势啊。
Knight94
2006-08-27
打赏
举报
回复
ref:
http://blog.csdn.net/Knight94/archive/2006/08/05/1023352.aspx
fattycat
2006-08-27
打赏
举报
回复
mark
jointan
2006-08-27
打赏
举报
回复
使用using语句
using(MyClass obj=new MyClass())
{
//TODO:
}
退出using语句时,析构函数会被调用
limengchen
2006-08-26
打赏
举报
回复
因为有一个类要使用数据库,而且同时只能有一个类使用,所以在创建类的时候要锁定数据库,类析构的时候要解锁。但如果析构函数不保证会执行的话,那怎么办?
rib06
2006-08-17
打赏
举报
回复
在自动垃圾回收的机制下就是没什么用,而且也不建议写析构方法,一切交给CLR去处理就好了,人工干预反而会更乱
liangge
2006-08-17
打赏
举报
回复
http://www.54r.cn/webcl/10143531/
http://www.netyi.net/blog/user1/1743/archives/2005/4120.shtml 你可以看看
C++中虚
析构函数
的作用
我们知道,用C++开发的时候,用来做基类的类的
析构函数
一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明:
《当
析构函数
遇到多线程》PPT
这是陈硕在 2009 年上海 C++ 技术大会演讲《当
析构函数
遇到多线程》的 PPT 投影片,可自由用于个人学习,其他使用需得到作者许可。 简介:编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种 race condition 是 C++ 多线程编程面临的基本问题,可以借助 tr1 中的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。
为什么
析构函数
必须是虚函数?为什么默认的
析构函数
不是虚函数?
微信搜索“编程笔记本”,获取更多信息 ------------- codingbook2020 ------------- 今天我们来谈一谈面试 C++ 工程师时经常被谈到的一个问题:为什么
析构函数
必须是虚函数?为什么默认的
析构函数
不是虚函数? 首先,我们看一下百度百科对虚函数是怎么定义的: 在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual...
C++默认的
析构函数
不是虚函数?
析构函数
必须是虚函数?
虚
析构函数
:基类指针指向子类对象,用基类指针删除子类对象 纯虚
析构函数
:需要类内声明,类外实现,含之抽象类,不可实例化 C++默认的
析构函数
不是虚函数?
析构函数
必须是虚函数? C++默认的
析构函数
不是虚函数目的:节省内存 虚函数需要额外的虚函数表和虚表指针,占用额外的内存。对于不会被继承的类来说,将析构设置成虚函数会浪费内存。只有需要当作父类时,设置成虚函数
析构函数
必须是虚函数:防止内存泄漏 当一个类作为父类,需要被继承,才把它的
析构函数
设置为虚函数, 子类有开辟到堆区的属性,父类指针走不到子类的
析构函数
为什么父类的
析构函数
必须是虚函数,而C++默认的
析构函数
不是虚函数?
为什么父类的
析构函数
必须是虚函数,而C++默认的
析构函数
不是虚函数? 因为当我们用基类指针指向new出来的子类时,根据动态绑定可以确保子类新添加的部分也可以被顺利释放掉,以防出现内存泄漏。 而默认的
析构函数
不是虚函数的原因是因为:虚函数需要额外的虚函数表和虚表指针,会占用格外内存,对于不会有子类的类来说,这个是没有必要的。 虚函数和虚表指针:https://blog.twofei.com/496/ ...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章