从类调用函数而不进行新的初始化 - C#

时间:2012-02-13 19:13:23

标签: c# winforms class

我在一个类中创建了两个表单和一组函数。我必须从Form1的类中调用一些函数,并在Form2中使用它们,并在Form1的类中存储一些变量值,现在我在Form2上使用以下代码:< / p>

    private void button1_Click(object sender, EventArgs e)
    {
        if (checkBox1.CheckState == CheckState.Checked)
        {
            GetSetRequests reqClass = new GetSetRequests();
            MessageBox.Show(reqClass.RequestID.ToString());
        }
    }

RequestID是在类GetSetRequests中创建的变量。 Form1存储的值我必须在form2中使用该值,但由于类的新初始化,此值变为null。是否可以在不进行新初始化的情况下从类中调用值和函数?

2 个答案:

答案 0 :(得分:0)

如果希望两个表单共享同一个对象实例,则需要将对象从其中一个表单传递给另一个表单。将该类型的对象添加到Form2的构造函数中,并在Form1创建它的实例时,然后将GetSetRequests传递给它。

正如其他人所提到的,你也可以给类静态属性,但这意味着它不能在其他任何地方使用。

答案 1 :(得分:0)

变量可以是静态的(或者VB.NET中的关键字更具描述性:shared)。即变量在GetSetRequests类的所有实例之间共享。但是,在大多数情况下,静态/共享变量是一个坏主意。

您应该将GetSetRequests对象从Form1传递到Form2并让两者使用相同的实例。

因为你问这个问题,你应该阅读有趣的OOP原则。以下文章适用于Java,但类在C#中的工作方式相同:http://docs.oracle.com/javase/tutorial/java/concepts/class.html