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

C# 从类调用函数而不进行新的初始化-C,c#,winforms,class,C#,Winforms,Class,我在一个类中创建了两种形式和一组函数。我必须从Form1的类中调用一些函数,并在Form2中使用它们,其中一些变量值存储在Form1的类中,现在我在Form2上使用以下代码: private void button1_Click(object sender, EventArgs e) { if (checkBox1.CheckState == CheckState.Checked) { GetSetRequests reqC

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

    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。是否可以在不进行新初始化的情况下从类调用值和函数?

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


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

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


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

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

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


既然你问了这个问题,你应该仔细阅读OOP的基本原理。下面的文章是针对Java的,但是类在C中的工作方式与之相同:

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

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

既然你问了这个问题,你应该仔细阅读OOP的基本原理。下面的文章是针对Java的,但类在C中的工作方式相同: