如何在C#中创建对象引用

本文关键字:创建 对象引用 | 更新日期: 2023-09-27 18:00:42

我最近开始创建自己的类,并决定创建一个简单的类,但遇到了一个问题。事情是这样的:

在我的表格1中,我有一个

SqlCeConnection sqlCEconn = new SqlCeConnection(@"Data Source = C:'Dropbox'Visual'Database test2 -treeview'Database test2 -treeview'Database2.sdf");

在我的新课程"测试"中,我有这个:

namespace Database_test2__treeview
{
class test
{
    public string testCHECK()
    {
        SqlCeConnection sqlCEconn = new SqlCeConnection();
        if (sqlCEconn.State == ConnectionState.Open)
        {
            return "Database connection: Open";
        }
        if (sqlCEconn.State == ConnectionState.Closed)
        {
            return "Database connection: Closed";
        }
        else
        {
            return "";
        }
    }
}
}

稍后在Form1中,我使用我的新类来检查连接是否打开,方法是:

private void Form1_Load(object sender, EventArgs e)
    {
        sqlCEconn.Open();
        test testconnection = new test();
        Toolstrip1.Text = testconnection.testCHECK();

很明显,返回字符串将是"Closed",因为test.cs中的SqlCeConnection没有链接到Form1 中的SqlCeConnection

我该如何以简单的方式做到这一点?

谢谢。

如何在C#中创建对象引用

如果您想要引用,那么只需将其作为参数发送:

public string testCHECK(SqlCeConnection thisConnection)
{
    if (thisConnection.State == ConnectionState.Open)
    {
        return "Database connection: Open";
    }
    if (thisConnection.State == ConnectionState.Closed)
    {
        return "Database connection: Closed";
    }
    else
    {
        return "";
    }
}

您正在test类中创建一个新的连接对象-如果您想检查现有连接的状态,您应该将其传递给test类,甚至testCheck方法:

class test
{
    public string testCHECK(SqlCeConnection sqlCEconn)
    {
        if (sqlCEconn.State == ConnectionState.Open)
        {
            return "Database connection: Open";
        }
        if (sqlCEconn.State == ConnectionState.Closed)
        {
            return "Database connection: Closed";
        }
        else
        {
            return "";
        }
    }
}

这样称呼它:

sqlCEconn.Open();
test testconnection = new test();
Toolstrip1.Text = testconnection.testCHECK(sqlCEconn);

您应该创建一个名为SqlManager之类的类,并从那里管理针对数据库的连接和操作。

这将允许多个不相关的类使用完全相同的连接对象。

在您的检查中,您创建了新的连接,同时它应该作为参数跟随在您的testCHECK中

public string testCHECK(SqlCeConnection sqlCEconn)

和你的电话

Toolstrip1.Text = testconnection.testCHECK(sqlCEconn)

我认为您希望在测试构造函数上打开连接。另一种选择是将在Form1_Load上创建的sqlCEconn作为参数传递给测试对象