发现C#的重大缺陷或Bug
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestDb2
{
public class AccessDb
{
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=C:\\tmp\\finance.mdb";
System.Data.OleDb.OleDbConnection conn = null;
public AccessDb()
{
conn = new System.Data.OleDb.OleDbConnection(connstr);
conn.Open();
}
~AccessDb()
{
conn.Close();
conn.Dispose();
}
}
public partial class Form1 : Form
{
AccessDb db = null;
public Form1()
{
InitializeComponent();
db = new AccessDb();
}
}
}
上面程序中有一个类AccessDb,该类的析构函数执行了关闭数据库连接操作。但运行时出错,当程序运行到析构函数时,系统报句柄conn未被初始化。
在类的析构函数中执行一些释放资源的操作是很普通的,该操作在C++,Java中都是可以的,但唯独在C#中碰到了问题。笔者认为这是C#的重大缺陷,因为系统显然在析构函数被调用之前就把这个类的成员变量的对象都销毁了。C++和Java可都不是这样的,这违反常理啊!
各位大神有什么看法和解决之道?本人就是想在类被销毁的时候访问成员变量做一些善后工作,看来在析构函数里不能做了,在哪里可以做?

相关推荐
缺陷管理系统 c#
C#编写 功能齐全的软件缺陷跟踪管理系统。
C#缺陷修复大揭秘:5步教你精准评估风险,轻松搞定软件Bug?
🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀你是否曾经面对一个棘手的软件缺陷而感到无从下手?或者在尝试修复一个看似简单的Bug时,却意外地引入了更多问题?别担心,这篇文章将带你深入探索C#软件缺陷修复的风险评估过程。我们将通过详细的步骤讲解和丰富的代码示例,帮助你掌握如何准确评估修复风险,并采取正确的行动来解决那些烦人的Bug。
C#编写的日常软件bug跟踪工具
C#(发音为 “C Sharp”)是一种由微软开发的现代、类型安全的面向对象的编程语言。它被设计为可以运行在.NET框架之上。C#的语法在很大程度上借鉴了C++和Java,采用C风格的语句、表达式和控制流,同时引入了声明、垃圾回收、异常处理、类型安全等特性。配置文件是软件系统中非常关键的一环,它们允许开发人员和管理员在不直接修改代码的情况下调整程序的行为。本章将深入探讨配置文件的重要性、实际应用,以及如何通过配置文件的自定义实现灵活性和扩展性。
C#缺陷预防的“三把利剑”:从“BUG横行”到“零缺陷”,如何用代码“魔法”封印漏洞?
🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀。
5大绝招:C#如何像孙悟空一样消灭软件缺陷
大家好,我是墨瑾轩,一个靠写代码给软件"打疫苗"的"IT孙悟空"。“从此告别’上线后BUG满天飞’的噩梦,迎接’代码坚如磐石’的质量保证”“BUG像偷蟠桃的小妖——C#就是你的’金箍棒’,一棒一个准!的"五件法宝",让你的代码像"天兵天将"一样坚不可摧!因为软件缺陷就像"偷蟠桃的小妖"——🔥关注墨瑾轩,带你探索编程的奥秘!🔥超萌技术攻略,轻松晋级编程高手🚀。🔥技术宝库已备好,就等你来挖掘🚀。🔥订阅墨瑾轩,智趣学习不孤单🚀。🔥即刻启航,编程之旅更有趣🚀。而C#就像"金箍棒"——用。


