关于c#中对象的基本构造函数问题

时间:2009-12-06 14:30:35

标签: c#

嘿伙计们,刚刚开始使用C#。我有些疑惑,如果有人能帮助我,我会非常感激。


问题1

   namespace borrowmoney
    {
        public partial class Form1 : Form
        {
            guy nikhil = new guy();

             public Form1()
            {
                InitializeComponent();


                nikhil.cash=50;
             }
          }
    }

这里在上面的程序中form1()构造函数应该首先运行,但是实例化是在构造函数之外完成的,所以构造函数如何知道实例化并返回使用guy的数据成员(cash是数据的成员) ())

3 个答案:

答案 0 :(得分:5)

编译代码时,实例化将移动到构造函数。它将在构造函数体执行之前被实例化。

答案 1 :(得分:0)

@ Mehrdad处理了订购问题。但是,我认为,关于您的第二个问题,您需要阅读范围和可访问性规则。评估的顺序与范围有关,在某种意义上,存在基于范围定义评估顺序的规则,但是特定成员的知识(可访问性)不是由评估顺序定义的。在这种情况下,因为变量是一个实例变量,所以它可以在类中的任何地方引用,包括构造函数。如果在构造函数运行之前没有给出一个值,你就会得到一个空引用异常,但是访问它的成员的合法性取决于,而不是取决于赋值的时间,而是变量和它的成员是如何在可访问性方面声明。

答案 2 :(得分:0)

查看Jon Skeets Constructor Page以回答所有构造函数和成员变量初始化问题。这是一个非常详细的解释。