为什么变量触发器抛出异常?
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
。
我无法用 触发器 声明一个变量。只要变量的值发生变化并且触发机制应该改变另一个变量的值,就会触发此触发器。
下面的代码编译正常但抛出 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
。