有关c#中的析构函数

l8487 2009-02-23 01:46:40
我自己写的一个类,有很多方法,许多地方用。。
但是初期没考虑到这个类会用的很频繁。。
现在问题出现了,,,我的类中的各个不同的方法都是在方法内部建立数据库链接,操作,然后关闭。。
如果我在其他地方new这个类以后需要多次用到里边的方法的话,那么就要多次建立链接,然后关闭,效率极其低下,
因此,我想修改这个类。在类的构造函数中建立链接。然后在类的析构函数中释放连接。
但是,据说c#中的析构函数最好不要用。。。我很为难啊。
各位大侠,关于C#中的析构函数有谁用过,到底效果如何?
...全文
93 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 l8487 的回复:]
实现IDispose接口。要注意什么?或者会不会带来其他的问题。。
[/Quote]

呵呵,纯粹的编程,没有其他问题,既然是dispose,那只要做dispose的事情就可以了。
l8487 2009-02-23
  • 打赏
  • 举报
回复
实现IDispose接口。要注意什么?或者会不会带来其他的问题。。
abcyzq 2009-02-23
  • 打赏
  • 举报
回复
学习。
沅江汐水 2009-02-23
  • 打赏
  • 举报
回复
实现IDispose接口,用于释放资源
DeadlyRemind 2009-02-23
  • 打赏
  • 举报
回复
如三楼所说
人工智能算法 2009-02-23
  • 打赏
  • 举报
回复
如果数据库访问频繁最好使用连接池, 就算在构造中创建连接 析构中关闭连接 其实也不理想
析构函数不能被马上清理 也就是说 当你类已经用完的时候,析构函数并没有马上被调用 具体调用时间得看垃圾回收器了
这样 如果你频繁创建连接 等待析构 那也许瞬间就发现数据库连接被占满了
为什么呢? 原因很简单 就是所有的类的析构函数未必都马上被执行了
fuyuxin19801120 2009-02-23
  • 打赏
  • 举报
回复
在方法里面打开连接 操作完毕后再关闭 会有什么影响啊 都这么弄的
北京的雾霾天 2009-02-23
  • 打赏
  • 举报
回复
如果访问数据很频繁,可以考虑怎样减少对数据库的访问次数。不要指望在析构函数里释放这类资源。
  • 打赏
  • 举报
回复
其实你用sqlconnnection,即使在方法里频繁open和close,效率应该不会太低,open和close只是到连接池里去取和放回去,而并不是每次真的去开一个数据库连接,不过你现在改的方式当然应该比你之前的方式快,因为不要频繁放回连接池而频繁去取了。
  • 打赏
  • 举报
回复
不要依靠析构函数来关闭连接,析构函数是垃圾回收器在回收时调用的,因此很有可能不会理解关闭你在构造函数里开的连接,如果使用这个类频繁,很有可能后面使用的线程会拿不到连接,因为前面还没有释放连接,你可以实现IDispose接口,在dispose方法里释放开的连接,然后用using来构造你的这个类,或者公开一个close方法,代码明确去调用。
ronghuo 2009-02-23
  • 打赏
  • 举报
回复
这里有篇,写的还不错http://www.hk-18p2p.cn/hk/?fromuid=18190

110,536

社区成员

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

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

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