为什么变量触发器抛出异常?

Why the variable trigger throws exception?

我无法用 触发器 声明一个变量。只要变量的值发生变化并且触发机制应该改变另一个变量的值,就会触发此触发器。

下面的代码编译正常但抛出 NullReferenceException (screenshot after exception).

文件:Program.cs

using System;
using System.Windows.Forms;

namespace test {
    class Program {
        public static Active active = new Active();
        public static FormMain formMain = new FormMain();

        [STAThread]

        static void Main() {
            Application.Run(formMain);
        }
    }
}

文件:DataStruct.cs

namespace test {
    public class Active {
        public string UserName {
            get {
                return (Program.formMain.labelUserName.Text);
            }
            set {
                Program.formMain.labelUserName.Text = value;
            }
        }
    }
}

文件FormMain.cs

using System;
using System.Windows.Forms;

namespace test {
    class FormMain : Form {
        public Label labelUserName = new Label();

        public FormMain() {
            this.Controls.Add(labelUserName);
            Program.active.UserName = "User Name";
        }
    }
}

因为你在FormMain构造函数中,静态变量Program.formMain还没有初始化,因为你正在创建你要初始化的FormMain对象Program.formMain.

直接更新 labelUserName