我坚持用触发器声明变量。只要变量的值发生变化并且触发机制应该改变另一个变量的值,就会触发此触发器。
下面的代码编译正常,但抛出 NullReferenceException (screenshot after exception)。
file: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);
}
}
}
file: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";
}
}
}
答案 0 :(得分:3)
这是因为当你在FormMain
构造函数中时,静态变量Program.formMain
尚未初始化,因为你正在创建你需要的FormMain
对象初始化Program.formMain
。
直接更新labelUserName
。