c# 如何从新的 class 使用先前创建的 class 实例

c# how to use a previously created instance of a class from a new class

我正在通过阅读教程和编写自己的程序来学习 C#,我将面临下一个场景,我将使用一个示例: 我在另一个文件中创建了一个 Class 并在 form1 中创建了一个实例来填充它的属性,即:

 //Person.cs file
public Class Person
{
string name;
int age;
}

//Form1.cs file
... //I create the instance:
Person newPerson = new Person();
...
newPerson.name = textBox1.Text;
newPerson.age = textBox2.Text;

现在,我在一个单独的文件 (toSQL.cs) 中有第三个 Class,它有一个将值存储到 SQL 中的方法,但我知道的唯一方法使用 Person Class 的实例是通过创建一个新实例。 如何从 SQL Class 访问 Form1 中创建的 Person 对象的属性?

您可以在表单代码中创建第三个 class 的实例,前提是此 class 不是 static。然后你可以调用任何你想要的方法。

假设你有这样的配置:

// This should be the handler for the save button.
// A button, which when will be clicked a new Person should be inserted in    
// the database.
private void Save_Click(object sender, EventArgs e)
{
    // Here we create a new Person object.
    Person person = new Person();
    person.name = textBox1.Text;
    person.age = textBox2.Text;

    // Here we create an instance of the ToSQL class.
    // This is the class, whose definition is in the toSQL.cs file 
    ToSQL toSql= new ToSQL();

    // Here we call a method called SavePerson, which inserts a new
    // Person in the database.
    toSql.SavePerson(person);
}

您可以通过方法将 Person 的实例传递给 ToSQL class。

例如..也许您的 Form1 文件中也有这个:

ToSQL _sql = new ToSQL();

..而你的 ToSQL class 有这个方法:

public int SavePerson(Person p) {
    /*
     * "p" in this method refers to the instance of Person you
     *  passed in from Form1
     */

    // This is where your SQL code goes ..

    return sqlCommand.ExecuteNonQuery();
}

然后您可以将 Person 实例传递给此方法.. 如下所示:

int result = _toSql.SavePerson(newPerson);

我发现 Form1.cs 包含对 Person 的引用。并且您希望 ToSql.cs 也能够引用同一个人。

那么 ToSql.cs 和 Form1.cs 目前是如何连接的? Program.cs 会同时创建它们吗?

您可以在 Form1.cs 中声明一个 ToSql 实例吗?然后你可以在 Form1.cs 内将 Person 传递给 ToSql。