实例化对象时出现奇怪的错误

时间:2012-02-11 23:15:03

标签: c# asp.net object reference

下面是我的项目中的代码隐藏文件,正如您可以看到我在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
    }
}

1 个答案:

答案 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
}