C# 下面的代码实际上是如何工作的?

C# 下面的代码实际上是如何工作的?,c#,forms,winforms,C#,Forms,Winforms,我目前正在开发一个相当简单的Windows窗体,它允许我在文本字段中键入诸如名称和编号之类的信息,然后将其添加到列表视图中。信息是以另一种形式输入的,我在计算如何从Form2访问Form1中的列表视图时遇到了一些问题 我发现下面的代码工作得很好 表格1: private void button1_Click(object sender, System.EventArgs e) { Form2._Form1 = this; Form2 form2 = new Form2();

我目前正在开发一个相当简单的Windows窗体,它允许我在文本字段中键入诸如名称和编号之类的信息,然后将其添加到列表视图中。信息是以另一种形式输入的,我在计算如何从Form2访问Form1中的
列表视图时遇到了一些问题

我发现下面的代码工作得很好

表格1:

private void button1_Click(object sender, System.EventArgs e)
{
     Form2._Form1 = this;
     Form2 form2 = new Form2();
     form2.Show();
}
表格2:

    public static Form1 _Form1;
现在,我只想知道两件事。这实际上是做什么的?我必须使用静电吗? 抱歉,如果这是一个非常模糊的问题,我只是想知道我到底在做什么

这实际上是做什么的

它将静态字段(由
Form2
的所有实例共享)设置为form1实例。然后创建一个
Form2
实例并显示它

我必须使用静电吗

否-只有当
Form2
的所有实例都应共享回同一
Form1的相同引用时,才使用static。

因为这很可能不是必需的,所以我认为实例字段和构造函数参数(以确保字段已设置)更合适:

private Form1 _Form1;
public Form2(Form1 form1)
{
   this._Form1 = form1;
}
然后在单击事件处理程序中:

private void button1_Click(object sender, System.EventArgs e)
{
     Form2 form2 = new Form2(this);
     form2.Show();
}

我还鼓励使用更具描述性的表单/字段名称:)

请学习阅读C语言文档。您的问题确实过于宽泛,但从根本上讲,您似乎在问什么是
静态
字段。有关
静态
成员的一般情况和特定字段的详细概述,请参见副本。您发布的代码只是将
Form2
中的
static
字段设置为当前
Form1
实例。假设
Form2
可以访问
Form1
实例的成员。坦率地说,这是一种可怕的做法。
Form2
根本不可能直接引用
Form1
,如果它确实需要它,应该将它传递到构造函数中。另请参阅以Winforms
Form
对象为主要示例,了解有关如何处理对象间交互的更好建议(该建议一般适用,但该问题具体涉及
表单
对象).我是在这里创建类变量吗?当我创建int或string时,我可以很容易地知道它是什么类型的变量。但是,当您输入类的名称而不是int、string、bool等时,它是什么类型的变量?它是对该类型(或null)实例的引用。这与您的代码之间的唯一区别是“变量”(精确地说是一个字段)是静态的-我的不是。