我真的不明白,我的所有学习只会使我更加困惑。
代码段:
namespace Family_Finances
{
class sqlStuff
{
private SQLiteConnection m_dbConnection;
//DialogResult msgBoxResult = DialogResult.Ignore;
//string myDirectory;
public int beepFreq = 880;
public int beepLength = 500;
private SQLiteConnection dbConn;
private string dbSelect()
{
我想做的是创建一个类,不用担心我什至没有引用它,它是可重用的,并将我所有的sqlite支持代码都放在一个类中。
我已经恢复了原始代码,因为我已经尝试了所有内置更正,并且粪堆越来越深,包括在甚至没有被引用的主命名空间中更改代码。
我希望我的db_conn在整个课程中都可以使用,这样我就不必将它传递给每个引用了/从每个引用传递给它...
我知道我有两个问题...
“正在使用”和“ IDisposable”
(我不知道“使用”隐含了“ Dispose()”,我不需要“ Close()”。令人遗憾的是我的代码有效,并且我从未见过“ Dispose()”的示例”。也许回到乡村学习和学习古典希腊语会更容易?但是,我确实喜欢编码...)
那么我该如何解决这个问题,以便可以在其他项目以及该项目中重复使用代码...
请保持温柔……我是自学成才的……而且,据我所知,在Framework和C#上显然存在漏洞(深井)。谢谢!
答案 0 :(得分:1)
任何包含通过Microsoft规则实现IDisposable接口的字段的类,也应在包含的对象上实现IDisposable模式。您的SQLiteConnection对象实现了这种模式。
这不是严格执行的规则,除非您打算将该类用作库或将其公开给外部程序集。
不完整的示例:
class sqlStuff : IDisposable
{
private SQLiteConnection m_dbConnection;
//DialogResult msgBoxResult = DialogResult.Ignore;
//string myDirectory;
public int beepFreq = 880;
public int beepLength = 500;
private SQLiteConnection dbConn;
public void Dispose()
{
m_dbConnection?.Dispose();
dbConn?.Dispose();
Dispose(true);
GC.SuppressFinalize(this);
}
}