下面是我的项目中的代码隐藏文件,正如您可以看到我在Page_Load中实例化了一个名为“SecretNumber”的类的对象。我最近在按钮函数中访问对象引用时遇到了问题,因为我忘了将引用放在范围之外(private SecretNumber guessNr)。
但是,由于一些奇怪的原因,此代码会生成以下错误:“Field'_Default.guessNr'永远不会被分配给,并且将始终将其默认值设置为null。”
如果我删除“private SecretNumber guessNr”(生成错误),则无法再从按钮功能到达对象引用的问题,那么显而易见的是为该对象分配了引用。
为什么我会收到此错误以及如何解决?
public partial class _Default : System.Web.UI.Page
{
private SecretNumber guessNr;
protected void Page_Load(object sender, EventArgs e) {
SecretNumber guessNr = new SecretNumber();
}
protected void btnCheckNr_Click(object sender, EventArgs e) {
if (!Page.IsValid){
return;
}
// The rest of the code goes here
}
}
答案 0 :(得分:1)
您需要在Page_Load方法中进行微妙的更改
private SecretNumber guessNr; // declared field here
protected void Page_Load(object sender, EventArgs e) {
guessNr = new SecretNumber();
}
你拥有它的方式,你声明一个同名的局部变量。它在方法内隐藏了类级字段。
int x; // this is a class level field
int y; // same
public void Foo()
{
int x; // this is a local of the same name
this.x = 7; // this is how you would access the class field from this method
y = 4; // no need for "this." for disambiguation
}