C# 为什么变量触发器引发异常?
我一直在声明一个带有触发器的变量。每当变量的值发生变化时,就会触发此触发器,并且触发器机制应该改变另一个变量的值 下面的代码编译得很好,但抛出NullReferenceException() 文件:Program.csC# 为什么变量触发器引发异常?,c#,variables,triggers,C#,Variables,Triggers,我一直在声明一个带有触发器的变量。每当变量的值发生变化时,就会触发此触发器,并且触发器机制应该改变另一个变量的值 下面的代码编译得很好,但抛出NullReferenceException() 文件:Program.cs using System; using System.Windows.Forms; namespace test { class Program { public static Active active = new Active();
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);
}
}
}
namespace test {
public class Active {
public string UserName {
get {
return (Program.formMain.labelUserName.Text);
}
set {
Program.formMain.labelUserName.Text = value;
}
}
}
}
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";
}
}
}
文件:DataStruct.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);
}
}
}
namespace test {
public class Active {
public string UserName {
get {
return (Program.formMain.labelUserName.Text);
}
set {
Program.formMain.labelUserName.Text = value;
}
}
}
}
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.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);
}
}
}
namespace test {
public class Active {
public string UserName {
get {
return (Program.formMain.labelUserName.Text);
}
set {
Program.formMain.labelUserName.Text = value;
}
}
}
}
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
。这是因为当您在FormMain
构造函数中时,静态变量Program.FormMain
尚未初始化,因为您正在创建FormMain
对象,您想用它初始化Program.FormMain
直接更新
labelUserName
。这是因为当您在FormMain
构造函数中时,静态变量Program.FormMain
尚未初始化,因为您正在创建FormMain
对象,您想用它初始化Program.FormMain
直接更新
labelUserName
。这是因为当您在FormMain
构造函数中时,静态变量Program.FormMain
尚未初始化,因为您正在创建FormMain
对象,您想用它初始化Program.FormMain
直接更新
labelUserName
。为了节省空间,我对原始代码做了一些修改。在原始代码中,FormMain打开另一个表单(FormLogin),并在评估密码后更新状态栏中的用户名。我没有为类Active
声明变量,而是尝试将其用作全局变量(如Active.UserName=“…”
),但这也不起作用。为了节省空间,我对原始代码做了一些更改。在原始代码中,FormMain打开另一个表单(FormLogin),并在评估密码后更新状态栏中的用户名。我没有为类Active
声明变量,而是尝试将其用作全局变量(如Active.UserName=“…”
),但这也不起作用。为了节省空间,我对原始代码做了一些更改。在原始代码中,FormMain打开另一个表单(FormLogin),并在评估密码后更新状态栏中的用户名。我没有为类Active
声明变量,而是尝试将其用作全局变量(如Active.UserName=“…”
),但这也不起作用。为了节省空间,我对原始代码做了一些更改。在原始代码中,FormMain打开另一个表单(FormLogin),并在评估密码后更新状态栏中的用户名。我没有为类Active
声明变量,而是尝试将其用作全局变量(如Active.UserName=“…”
),但这也不起作用。您试图在初始化FormMain
之前调用它,这里的总体设计很糟糕。该模型在多个位置与UI耦合&不需要使用静态
变量。您试图在它实际初始化之前调用FormMain
,这里的总体设计很糟糕。该模型在多个位置与UI耦合&不需要使用静态
变量。您试图在它实际初始化之前调用FormMain
,这里的总体设计很糟糕。该模型在多个位置与UI耦合&不需要使用静态
变量。您试图在它实际初始化之前调用FormMain
,这里的总体设计很糟糕。该模型在多个位置与UI耦合&不需要使用静态变量。