嘿伙计们,刚刚开始使用C#。我有些疑惑,如果有人能帮助我,我会非常感激。
namespace borrowmoney
{
public partial class Form1 : Form
{
guy nikhil = new guy();
public Form1()
{
InitializeComponent();
nikhil.cash=50;
}
}
}
这里在上面的程序中form1()构造函数应该首先运行,但是实例化是在构造函数之外完成的,所以构造函数如何知道实例化并返回使用guy的数据成员(cash是数据的成员) ())
答案 0 :(得分:5)
编译代码时,实例化将移动到构造函数。它将在构造函数体执行之前被实例化。
答案 1 :(得分:0)
@ Mehrdad处理了订购问题。但是,我认为,关于您的第二个问题,您需要阅读范围和可访问性规则。评估的顺序与范围有关,在某种意义上,存在基于范围定义评估顺序的规则,但是特定成员的知识(可访问性)不是由评估顺序定义的。在这种情况下,因为变量是一个实例变量,所以它可以在类中的任何地方引用,包括构造函数。如果在构造函数运行之前没有给出一个值,你就会得到一个空引用异常,但是访问它的成员的合法性取决于,而不是取决于赋值的时间,而是变量和它的成员是如何在可访问性方面声明。
答案 2 :(得分:0)
查看Jon Skeets Constructor Page以回答所有构造函数和成员变量初始化问题。这是一个非常详细的解释。