阅读小c#代码行,它们是什么意思

阅读小c#代码行,它们是什么意思,c#,parent-child,C#,Parent Child,我的问题对于那些非常熟悉这项工作的人来说非常简单。 这段代码是如何逐行读取的,尤其是3条注释的代码 private formMain parent = null; //explanation 1 public formChild(formMain parent) //explanation 2 { InitializeComponent(); this.parent = parent; //explanation 3 } 我的想法是: -说明1:正在创建具有空值的formMai

我的问题对于那些非常熟悉这项工作的人来说非常简单。 这段代码是如何逐行读取的,尤其是3条注释的代码

private formMain parent = null; //explanation 1
public formChild(formMain parent) //explanation 2
{
    InitializeComponent();
    this.parent = parent; //explanation 3
}
我的想法是: -说明1:正在创建具有空值的formMain的引用父级。我真的不知道这是什么意思,我想解释一下。可能是空值,因为在使用前必须对其进行初始化? -说明2:在子窗体的构造函数中传递父窗体的对象? -解释3:this.parent指的是私有成员(在第一行),而=parent指的是构造函数的参数列表中的成员

在父窗体中,在初始化子窗体时,会有一些小代码在(formMain parent)的构造函数中传递(this),我认为它传递的是当前窗体

这段代码是我在internet上找到的,它工作得很好,用于从子窗体访问父窗体的属性。 任何帮助都将不胜感激,提前感谢

注意:请使用此类模板进行评论: -解释1: -解释2:
-解释3:

我刚开始的时候经常这样评论,但过了一段时间,你的评论水平就让我发疯了,而不是解释功能/部件的目的是什么

也就是说,您不需要解释您设置Partent=null,因为代码已经说明,您可以解释为什么将其设置为null。

解释2是正确的(解释3也非常接近)


子窗体通过将其分配给私有成员变量来保留对其父窗体的引用。您希望保留引用的主要原因是为了与父级通信,或者访问父级表单中的公共属性或函数。

1:初始化变量或对象从来都不是一个坏主意。除非您知道希望变量具有
null
的初始值通常是更好的选择(在大多数情况下,另一种选择是具有一些您一无所知的随机值)。
2:此行声明了一个函数/方法,该函数/方法接受一个formMain类型的参数。在这种情况下,它被称为
parent

3:此行将私有成员
parent
设置为传递给函数的参数
parent
。它们关键字
表示类中包含的元素

更容易理解的重写可能如下所示:

private formMain parent = null; //explanation 1
public formChild(formMain element) //explanation 2
{
    InitializeComponent();
    this.parent = element; //explanation 3
}

子窗体的构造函数正在设置对其父窗体的引用

关于“this”的用法。如果构造函数包含赋值,则会出现问题

parent = parent; //this is circular 
为了引用同名的私有文件(在构造函数之外),“this”是预先挂起的:

this.parent = parent; //assign the value of the param to the private field
其他评论。这种风格似乎借鉴了Java,而不是C#的典型风格

  • 说明1:您正在创建一个名为
    parent
    的变量来保存某些内容。它将保存的“某物”是一个
    formMain
    。将其设置为
    null
    表示您还没有特定的
    formMain
    ,但您知道最终应该有一个
  • 说明2:您正在创建一个方法,该方法创建
    formChild
    的实例。此对象(
    formChild
    )依赖于
    formMain
    。即使依赖项与解释1中的名称相同,它们也不相同(尚未)
  • 解释3:外部传入的
    formMain
    称为
    parent
    (来自解释2)将从解释1分配给内部存储的
    parent
    。现在,刚刚创建的对象中的其余方法可以引用外部依赖关系
所以你使用这段代码的方式是这样的

//from a formMain type object. 
formChild childForm = new formChild(this);

//from the formChild object
this.parent.Title = "Title of parent being changed from child"

@斯库梅德尔,是的,它是:(一条质疑这是否是家庭作业的评论怎么能被认为是“很棒”的,3次?对我来说,这种评论只有在没有代表OP进行个人询问的情况下才有意义,而只是确定他们想知道一些事情。OP显然付出了一些努力,使这个问题与校外的任何其他问题没有区别失望先生:我不明白。我问的原因有两个:1)简单地回答任何被认为是“错误”的家庭作业都会让你遭到教育学圣殿骑士团的否决。2)这个问题或多或少需要有人为OP做所有的工作,并且要求提供一种回答格式,这让我怀疑它是否只是被复制粘贴到一些学校作业中。我非常感谢你从三个单词和一个问号中得出的关于我角色的好结论。@Skurmedel它不仅仅是复制粘贴的,我需要它来解释并在我未来的应用程序中使用它(当我了解更多,显然)。知道自己在做什么总是好的,而不仅仅是在不理解的情况下编写代码。@Skurmedel:首先,我们是否可以得出这样的结论:兴趣在于社区的想法,而不是实际帮助OP?令人不安,但没有真正的惊喜。第二,把精力放在OP知道的事情上,很自然地会问你不知道的事情,并且以学习的名义,为什么你会给任何用户提供不同的答案,当然他们都应该得到相同数量的信息,你能够以他们可以平等学习的形式提供这些信息?第三,我可以同意的格式要求在一些人看来是“可疑的”,但我认为这有点判断性——即使是正确的。是的,我们很匆忙,我们在一周内学习了两周,所以这就是为什么我失去了一些分数,但感谢你们所有人的帮助,meThat null给我带来了问题,所以它不能被输入
//from a formMain type object. 
formChild childForm = new formChild(this);

//from the formChild object
this.parent.Title = "Title of parent being changed from child"